Sql views'e koşul ekleme [Archive] - Excel Forum

PDA

Tüm Versiyonu Göster : Sql views'e koşul ekleme


zafer
12-12-2007, 14:25
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.

zafer
12-12-2007, 15:36
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.

zafer
12-12-2007, 16:40
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

yeni54
12-12-2007, 16:43
parametreli sorgular için stored procedure çok uygun. bence view ile uğraşmayın.

zafer
12-12-2007, 16:55
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çü;

zafer
12-12-2007, 18:43
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.

zafer
12-12-2007, 20:39
Teşekkür ederim.

İyi akşamlar

zafer
13-12-2007, 09:37
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

zafer
14-12-2007, 21:08
İ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.


Özel Arama