Tüm Versiyonu Göster : Sql views'e koşul ekleme
Merhaba
İki adet table'den bir adet Views (gelirler)yaptım.
gelirler views'ını yaratırken sayısal alanları toplattım ve ay'ı koşula bağladım.
Benim istediğim bu ay koşulunu dışarıdan vba'dan komut vererek değiştirmek.
aşağıdaki örnekte sql tablosuna alanları güncelleme ve ekleme yapabiliyorum.
Benim istediğim bu ay koşulunu dışarıdan vba'dan komut vererek değiştirmek.
örneğin Alter komutu ile tablo isimlerini ve tablonun alan isimlerini değiştirebiliyoruz. Ay alanının koşul ifadesini de değiştirebilirmiyiz.
"stsql=ALTER table ........ where(ay=10)" gibi
Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset
strConn = "PROVIDER=SQLOLEDB;"
strConn = strConn & "DATA SOURCE=" & server_ismi & ";INITIAL CATALOG=" & veritabanı_ismi & ";"
strConn = strConn & "UID=" & user & ";PWD=" & password
cnt.ConnectionString = strConn
cnt.Open
tablo_ismi = "aaa"
cnt.Open
stsql = "UPDATE " & tablo_ismi & " WHERE (AY" & " =" & whrdeg1d & ")"
rst.Open stsql, cnt, 1, 3
cnt.Close
Set rst = Nothing
Set cnt = Nothing
Zeki Gürsoy
12-12-2007, 15:30
View ler, tablolar gibi Alter olmuyor bildiğim kadarıyla. Silip yeniden oluşturmanız gerekiyor.
Elimdeki manager programın izlediği adımlar da bu şekildeydi.
Merhaba
Teşekkür ederim
silip oluşturabilirim.orada koşuluda verebilirim.Fakat ana view' bağlı olarak 8 tane view var. onlar bu arada bozulmazlarmı.
Zeki Gürsoy
12-12-2007, 15:41
Bozulacak imkanı yoktur. Çünkü bağlantılı oldukları için silerken hata iletisi alacaksınız.
Teşekkür ederim
Aşağıdaki komut dizini ile table yaratabiliyorum.View yaratamıyorum örnek verebilirmisiniz.
Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset
strConn = "PROVIDER=SQLOLEDB;"
strConn = strConn & "DATA SOURCE=" & server_ismi & ";INITIAL CATALOG=" & veritabanı_ismi & ";"
strConn = strConn & "UID=" & user & ";PWD=" & password
cnt.ConnectionString = strConn
cnt.Open
tablo_ismi = "aaa"
cnt.Open
stsql = "CREATE TABLE ziyaretci(ad CHAR(10), soyad CHAR(10), elmek CHAR(30),aciklama1 VARCHAR(100), aciklama2 VARCHAR(100))"
cnt.Execute stsql
cnt.Close
Set rst = Nothing
Set cnt = Nothing
parametreli sorgular için stored procedure çok uygun. bence view ile uğraşmayın.
Merhaba
Query analyzer MUHPROC isimli ile stored procedure oluşturuyorum.
EXEC MUHPROC 10, 2007 ile çalıştırıyorum.
ben EXEC MUHPROC 10, 2007 'i excel içinde kod ile çalıştırmak istiyorum
Zeki Gürsoy
12-12-2007, 18:10
Merhaba
Query analyzer MUHPROC isimli ile stored procedure oluşturuyorum.
EXEC MUHPROC 10, 2007 ile çalıştırıyorum.
ben EXEC MUHPROC 10, 2007 'i excel içinde kod ile çalıştırmak istiyorum
SP ler çok hızlıdır. Kullanmanızı şiddetle tavsiye ederim. :)
Ör:
Bir seçme sorgusu...
Set rs = cnt.Execute "SELECT * FROM MUHPROC (10, 2007);"
Zeki Gürsoy
12-12-2007, 18:19
View oluşturma aşağıdaki gibidir.
CREATE VIEW view_adı
AS
SELECT Alan1, Alan2
FROM Tablo_Adı
WHERE Alan1 = Ölçü;
Merhaba
Sayın Anemos , Sayın Yeni54 çok teşekkür ederim.
Sayın Anemos;
İşyerinde olmadığım için şu an deneyemiyorum.
Set rst = cnt.Execute "SELECT * FROM MUHPROC (10, 2007);"
aşağıdaki gibi kullanabilirmiyim.
stsql = "EXEC MUHPROC (10, 2007)"
cnt.Execute stsql
ilgi ve alakanıza çok teşekkür ederim
Zeki Gürsoy
12-12-2007, 19:16
M$ SQL Server kullanmadığım için konuya tam hakim değilim.
Ancak M$ SQL Serv.kaynaklarında Procedure'ü "EXEC" ile parantezsiz çalıştırıldığını gördüm. Yani,
stsql = "EXEC MUHPROC 10, 2007"
cnt.Execute stsql gibi.
Teşekkür ederim.
İyi akşamlar
Merhaba
Sql'de stored procedure yarattım.
Buna ait bilgileri excel'de nasıl göreceğim.query'den Tablo ve görünümlerden bilgi alabiliyorum stored procedure 'den nasıl hücrelere dökeceğim.
veya
Aşağıdaki şekilde hata veriyor.Başaka şekildemi düzenlemem gerekiyor.
baglanti5
cnt.Open
With rst
.ActiveConnection = cnt
.Open "SELECT * FROM MASRAF_MERKEZLERI_PROC"
Do While Not rst.EOF
For i = 0 To 2
Sheets("AAA").Cells(x + 2, i + 1) = rst(i)
Next i
rst.MoveNext
x = x + 1
Loop
.Close
End With
Zeki Gürsoy
13-12-2007, 15:14
Performans açısından iki farklı metot vereyim.
Sub Dokum1()
Dim i As Byte, ii As Long
For i = 0 To rst.Fields.Count - 1
Sheets("AAA").Cells(1, i) = rst(i).Name
Next
i = Empty
ii = 1
While Not rst.EOF
ii = ii + 1
For i = 0 To rst.Fields.Count - 1
Sheets("AAA").Cells(ii, i + 1) = rst(i)
Next
rst.MoveNext
Wend
ii = Empty
i = Empty
End Sub
Bu daha hızlıdır..
Sub Dokum2()
Dim i As Byte
For i = 0 To rst.Fields.Count - 1
Cells(1, i) = rst(i).Name
Next
Sheets("AAA").[a2].CopyFromRecordset rst
'CopyFromRecordset rst,65000 'Sorgudan ilk 65000 kayıt alınabilir. (Opsiyonel)
i = Empty
End Sub
İyi akşamlar,
stored procedure 'den(sadece görüntü listesi olduğu için) excel'e veri alınamıyormuş.
Kodlarla View'leri silip parametreleri hücrelere bağlı olarak tekrar yaratıyorum.
Verdiğiniz kod'larda diğer çalışmalarımda fazlasıyla iş görecek.
Çok teşekkür ederim.
vBulletin v3.7.2, Copyright ©2000-2012, Jelsoft Enterprises Ltd.