Sql views'e koşul ekleme

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
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

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,286
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
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

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
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

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,286
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Bozulacak imkanı yoktur. Çünkü bağlantılı oldukları için silerken hata iletisi alacaksınız.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
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
 
Katılım
15 Kasım 2006
Mesajlar
583
Excel Vers. ve Dili
Ms Office 2003 Türkçe
parametreli sorgular için stored procedure çok uygun. bence view ile uğraşmayın.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
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

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,286
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
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...

Kod:
Set rs = cnt.Execute "SELECT * FROM MUHPROC (10, 2007);"
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,286
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
View oluşturma aşağıdaki gibidir.
Kod:
CREATE VIEW view_adı
AS
SELECT Alan1, Alan2
FROM Tablo_Adı
WHERE Alan1 = Ölçü;
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
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 stsq
l


ilgi ve alakanıza çok teşekkür ederim




 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,286
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
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,

Kod:
stsql = "EXEC MUHPROC 10, 2007"
cnt.Execute stsql
gibi.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Teşekkür ederim.

İyi akşamlar
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
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

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,286
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Performans açısından iki farklı metot vereyim.
Kod:
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..
Kod:
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

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
İ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.
 
Üst