Excel deki Donguyu SQL e nasıl tanımlıyabilirim?

Kemal Demir

Özel Üye
Katılım
29 Temmuz 2004
Mesajlar
2,108
İyi akşamlar arkadaşlar,

Kaydedici ile oluşan kodda adres olarak belirtilen dongunun calisması için nasıl bir değişiklik yapılabilir.

Teşekkurler.

Kod:
For x = 1 To 20
adres = Sheets(1).Cells(x, 1)
    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DRIVER=SQL Server;SERVER=TRTNSTP-SQL01;UID=kdemir;APP=Microsoft Office 2003;WSID=TRTNSTP-WK068;DATABASE=NIPOFieldworkSystem;Tru" _
        ), Array("sted_Connection=Yes")), Destination:=Range("A1"))
        .CommandText = Array( _
        "SELECT ContactLog.SurveyName, ContactLog.ResponseStatus" & Chr(13) & "" & Chr(10) & "FROM NIPOFieldworkSystem.dbo.ContactLog ContactLog" & Chr(13) & "" & Chr(10) & "WHERE (ContactLog.SurveyName='Q6056') AND (ContactLog.ResponseStatus=&' adres')" _
        )
        .Refresh BackgroundQuery:=False
    End With
say = [b65536].End(3).Row - 1
son = Sheets(3).[a65536].End(3).Row + 1
Sheets(3).Cells(son, 1) = Sheets(2).[a2]
Sheets(3).Cells(son, 2) = Sheets(2).[b2]
Sheets(3).Cells(son, 3) = say
Next
 
Katılım
15 Ocak 2007
Mesajlar
791
Excel Vers. ve Dili
2003 excel visual basic
sn rakkas bu sql deyimindeki yapmak istediğiniz event nedir ya da burada yer alan deyimlerin otomatik olarak çalışmasını mı istiyorsunuz bunu tam anlayamadım ama ben işyerimde aynı bu şekilde SQL SERVER a bağlanıp veri alıyorum fakat SQL SERVER'ı ve diğer tüm bilgileri ayrı ayrı hücrelere yazdım ve her değişiklik yaptığımda hücrelerde yazan değerlere göre bağlantı yapıyor yapmak istediğiniz tam olarak bu mudur ?
 

Kemal Demir

Özel Üye
Katılım
29 Temmuz 2004
Mesajlar
2,108
iyi geceler,
Evet dongu içerisindeki ifadeleri Excel ilgili aralıgından(donguden) okuyacak.

Teşekkurler.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Sn.Rakkas

Kodu aşağıdaki gibi dener misiniz? Ancak sorgudaki alan isminde, problem olursa; "adres="' " & ...... satırındaki ilk tek tırnaktan sonraki boşluğu silin.

Kod:
For x = 1 To 20
adres = "' " & Sheets(1).Cells(x, 1) & "'"
    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DRIVER=SQL Server;SERVER=TRTNSTP-SQL01;UID=kdemir;" _
      & "APP=Microsoft Office 2003;WSID=TRTNSTP-WK068;DATABASE=NIPOFieldworkSystem;Tru" _
        ), Array("sted_Connection=Yes")), Destination:=Range("A1"))
        .CommandText = Array( _
        "SELECT ContactLog.SurveyName, ContactLog.ResponseStatus" & Chr(13) & "" & Chr(10) _
        & "FROM NIPOFieldworkSystem.dbo.ContactLog ContactLog" & Chr(13) & "" & Chr(10) _
        & "WHERE (ContactLog.SurveyName='Q6056') AND (ContactLog.ResponseStatus=" & adres & ")" _
        )
        .Refresh BackgroundQuery:=False
    End With
.....
.....
 

Kemal Demir

Özel Üye
Katılım
29 Temmuz 2004
Mesajlar
2,108
Günaydın,

Teşekkur ederim.Bugun deneyeceğim.

Denedim istediğim sonucu aldım teşekkurler

İyi Calismalar.
 
Son düzenleme:

Kemal Demir

Özel Üye
Katılım
29 Temmuz 2004
Mesajlar
2,108
Sn.Rakkas

Kodu aşağıdaki gibi dener misiniz? Ancak sorgudaki alan isminde, problem olursa; "adres="' " & ...... satırındaki ilk tek tırnaktan sonraki boşluğu silin.

Kod:
For x = 1 To 20
adres = "' " & Sheets(1).Cells(x, 1) & "'"
[b]adres2[/b]= "' " & [b]textbox1[/b] & "'"

    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DRIVER=SQL Server;SERVER=TRTNSTP-SQL01;UID=kdemir;" _
      & "APP=Microsoft Office 2003;WSID=TRTNSTP-WK068;DATABASE=NIPOFieldworkSystem;Tru" _
        ), Array("sted_Connection=Yes")), Destination:=Range("A1"))
        .CommandText = Array( _
        "SELECT ContactLog.SurveyName, ContactLog.ResponseStatus" & Chr(13) & "" & Chr(10) _
        & "FROM NIPOFieldworkSystem.dbo.ContactLog ContactLog" & Chr(13) & "" & Chr(10) _
        & "WHERE (ContactLog.SurveyName==" & adres2 & " ) AND (ContactLog.ResponseStatus=" & adres & ")" _
        )
        .Refresh BackgroundQuery:=False
    End With
.....
.....

İyi Gunler fpc ve diğer forumdaki arkadaslar;

adres2 diğe tanımladıgım alanın calismamasının nedeni hk bilgi verebilirmisiniz.

Teşekkurler.İyi calismalar.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Sn.Rakkas

İlk önce;

..... "WHERE (ContactLog.SurveyName==" & adres2 & " ) .... ifadesindeki, iki tane "eşittir" işaretinden birini kaldırın. Sanırım gözünüzden kaçmış.

Daha sonra; Makro çalıştığı zaman, sorgu'dan değer mi dönmüyor? Yoksa makro çalışıyor da bir yerde hata mı veriyor? Bunu belirtirseniz, problem biraz daha netleşecek.

Eğer, Makro sorunsuz çalışıyor ama sonuçta değer dönmüyorsa; muhtemelen TextBox1 boş olabilir. Bu durumda; hem ResponseStatus alanındaki değerlerin "adres" değişkenine; hem de SurveyName değerinin boş olduğu kayıtlara bakılır ki, iki koşul birden sağlanmadığı müddetçe de, bu sorgu da işlemez ve sonuç döndürmez.

Eğer böyleyse; SQL stringinde kodlarla; adres ve adres1 değişkenlerinin aldığı değerlere göre; WHERE koşul satırında geçen AND ve OR işleçlerinden uygun olanı seçmesi sağlanabilir.

Ama sorun, kodlarda çıkan bir hata mesajı ise, nerede, hangi hatayı aldığınızı da bilmek gerekiyor.
 

Kemal Demir

Özel Üye
Katılım
29 Temmuz 2004
Mesajlar
2,108
İyi geceler.

Sayın fpc yarın kodların calismasını calistiğim şirkette deneğeceğim.Size geri donusum olmayabilir.
İnter kullanımımız kısıtlı.Çok teşekkurler.
İyi geceler.
 

Kemal Demir

Özel Üye
Katılım
29 Temmuz 2004
Mesajlar
2,108
Gunaydın,

fpc kod'u aşağıya yazıyorum

Kod:
adres2 = "' " & TextBox1 & "'"
    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DRIVER=SQL Server;SERVER=TRTNSTP-SQL01;UID=kdemir;APP=Microsoft Office 2003;WSID=TRTNSTP-WK068;DATABASE=NIPOFieldworkSystem;Tru" _
        ), Array("sted_Connection=Yes")), Destination:=Range("A1"))
        .CommandText = Array( _
        "SELECT ContactLog.ContactDate, ContactLog.ResponseStatus, ContactLog.SurveyName, ContactLog.InterviewerNumber" & Chr(13) & "" & Chr(10) & "FROM NIPOFieldworkSystem.dbo.ContactLog ContactLog" & Chr(13) & "" & Chr(10) & "WHERE (ContactLog.ResponseStatus=18) " _
        , "AND (ContactLog.SurveyName=" & adres2 & " )")
        .Name = "Query from FMS_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With
Yukarıdaki kodda veriler gelmemekte ama aşagıdaki kodda ise veriler geliyor.
verilerin geldiği kod ise;

Kod:
 With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DRIVER=SQL Server;SERVER=TRTNSTP-SQL01;UID=kdemir;APP=Microsoft Office 2003;WSID=TRTNSTP-WK068;DATABASE=NIPOFieldworkSystem;Tru" _
        ), Array("sted_Connection=Yes")), Destination:=Range("A1"))
        .CommandText = Array( _
        "SELECT ContactLog.ContactDate, ContactLog.ResponseStatus, ContactLog.SurveyName, ContactLog.InterviewerNumber" & Chr(13) & "" & Chr(10) & "FROM NIPOFieldworkSystem.dbo.ContactLog ContactLog" & Chr(13) & "" & Chr(10) & "WHERE (ContactLog.ResponseStatus=18) " _
        , "AND (ContactLog.SurveyName='Q6335')")
        .Name = "Query from FMS_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With
adres2 olarak belirtilen yere Q6335 yazıyorum ama kod calisiyor ama veri getirmiyor.Muhtemelen yine bir yerde hata yapıyorum.Tekrar bakabilirmisiniz.Olması gereken kodu yazabilirmisiniz.

Teşekkurler
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Çalışmayan kodda; -ilk satırda- Textbox1 yerine Q6335 yazıp kodları tekrar çalıştırır mısınız? Yani şu şekilde :

Kod:
adres2="'" & "Q6335" & "'"
Herhangi bir değer döndürmüyorsa da; şunu deneyin :

Kod:
adres2="Q6335"
Alan tiplerinden kaynaklanan bir sorun olduğunu düşünüyorum.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Rica ederim. İşine yaradığına sevindim. Kolay gelsin.
 

Kemal Demir

Özel Üye
Katılım
29 Temmuz 2004
Mesajlar
2,108
İyi Gunler Arkadaslar,

Sn fpc ve arkadaslar aşagıdaki sorunum hakkında bir fikir alabilirmiyim.

Ek'teki dosyada Dtpicker nesnesi kullanılarak iki tarih arası Sql yardımı ile excele veri çekmeyi planlasamda yapamadım.
Müsaid bir zaman aralıgınızda dosyaya göz atabilirmisiniz.Çalışmamasının nedeni hakkında yardımcı olabilirimisiniz.

Teşekkurler iyi calismalar.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Selam,
"CommandText" kısmını aşağıdaki gibi kullanın.
Kod:
.CommandText = "Select * " & _
"From NIPOFieldworkSystem.dbo.ContactLog " & _
"Where ContactDate>=" & CLng(DTPicker1) & " And " & "ContactDate<=" & CLng(DTPicker2)
 

Kemal Demir

Özel Üye
Katılım
29 Temmuz 2004
Mesajlar
2,108
Sn anemos,

Oncelikle teşekkur ederim.

Bende biraz daha dıkkatlıce baktım ki sorunun kaynagını buldum.

Sorun:Dtpicker 'ı asagıdaki gibi tanımlamam yeterli oldu

onetime = "'" & DTPicker1.Year & "-" & DTPicker1.Month & "-" & DTPicker1.Day & " " & "10:45:45 " & "'"

Yıl-Ay-Gun ayrımını yapmam gerekirmiş.

Sn anemos tekrar teşekkurler.
 
Üst