• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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
 
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ı.
 
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
 
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);"
 
View oluşturma aşağıdaki gibidir.
Kod:
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 stsq
l


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




 
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.
 
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

 
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
 
İ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.
 
Geri
Üst