Tüm Versiyonu Göster : Microsoft Query'de tarihi excelden okutmak.
yollabana
09-04-2008, 16:03
Merhaba aşağıda yazdığım kodlarda tarih formatı düzgün çalışmadığından sonuç alamıyorum,tecrübeli arkadaşlarımın ve üstadlarımızın yardımına ihtiyacımız var ilgilenenlere şimdiden teşekkürler.
"SELECT LG_009_01_INVOICE.DATE_, LG_009_01_INVOICE.GRPCODE, LG_009_01_INVOICE.TRCODE, LG_009_01_INVOICE.NETTOTAL, LG_009_01_INVOICE.TOTALVAT, LG_009_CLCARD.CODE, LG_009_CLCARD.DEFINITION_, (LG_009_01_I" _
, _
"NVOICE.NETTOTAL-LG_009_01_INVOICE.TOTALVAT) AS 'SONUC'" & Chr(13) & "" & Chr(10) & "FROM FUJI.dbo.LG_009_01_INVOICE LG_009_01_INVOICE, FUJI.dbo.LG_009_CLCARD LG_009_CLCARD" & Chr(13) & "" & Chr(10) & "WHERE LG_009_CLCARD.LOGICALREF = LG_009_01_INVOICE.CLIE" _
, _
"NTREF AND ((LG_009_01_INVOICE.TRCODE Between 1 And 4) AND (LG_009_CLCARD.CODE Like '320%') AND (LG_009_01_INVOICE.DATE_ Between " + Format(Sheets("Sayfa1").Range("G1"), "yyyy-mm-dd") + " And " + Format(Sheets("Sayfa1").Range("G2"), "yyyy-mm-dd") + "))" & Chr(13) & "" & Chr(10) & "ORDER BY LG" _
, "_009_01_INVOICE.DATE_")
.Refresh BackgroundQuery:=False
tarih_bas = Format(Sheets("Sayfa1").Range("G1"), "yyyy-mm-dd")
tarih_bit = Format(Sheets("Sayfa1").Range("G2"), "yyyy-mm-dd")
bu şekilde isimlendirip. Cümlenin içinde.
LG_009_01_INVOICE.DATE_ Between " & tarih_bas & " And " & tarih_bit & "
olarak kullanırsan senin için kodları okumak daha kolay olur.
kısaca + yerine & kullanarak yapman gerekiyordu.
Hıım.
Bir şey daha. Range("G1") yerine ad verilmiş bir hüçrre kullan daha sonra bir hüçre silip eklendiğinde bütün kodları değiştirmek gerekiyor. Kazığını yedim bilirim. :).
G1 Hüsresine "Baslangic_Tarihi" adını veririsin yada herhangi bir isim Sonra
Range("Baslangic_Tarihi") bu şekilde kullanırsın.
" & Chr(13) & "" & Chr(10) & " bu kodların kodların arasındaki anlamıda satır bitimi
enter lanmış gibi düşüne bilirsin.
yollabana
16-04-2008, 14:26
Çok teşekkürler cevabınız için gerçekten benim için çok önemli bir konu bu,eğer bunu çalıştırabilirsem bir çok yerde işime yarayacak.Dediklerinizi yaptım bu seferde YSD(Yapılandırılmış Sorgu Dili)Hatası almaya başladım ve hata satırı olarakta
.Refresh BackgroundQuery:=False satırını gösteriyor.
Acaba parantez yada noktalı virgüllerde mi bi hata yapıyorum?
Bir ilgilenirseniz çok minnettar kalacağım.Teşekkürler.
tarih_bas = Format(Sheets("Sayfa1").Range("G1"), "yyyy-mm-dd")
tarih_bit = Format(Sheets("Sayfa1").Range("G2"), "yyyy-mm-dd")
With Sheets("Sayfa1").Range("FATURA_DETAY").QueryTable
.Connection = _
"ODBC;DRIVER=SQL Server;SERVER=LOGOSERVER;UID=emrahgurses;APP=Micro soft Office XP;WSID=MUHASEBE;DATABASE=FUJI;Trusted_Connection= Yes"
.CommandText = Array( _
"SELECT LG_009_01_INVOICE.DATE_, LG_009_01_INVOICE.GRPCODE, LG_009_01_INVOICE.TRCODE, LG_009_01_INVOICE.NETTOTAL, LG_009_01_INVOICE.TOTALVAT, LG_009_CLCARD.CODE, LG_009_CLCARD.DEFINITION_, (LG_009_01_I" _
, _
"NVOICE.NETTOTAL-LG_009_01_INVOICE.TOTALVAT) AS 'SONUC' FROM FUJI.dbo.LG_009_01_INVOICE LG_009_01_INVOICE, FUJI.dbo.LG_009_CLCARD LG_009_CLCARD WHERE LG_009_CLCARD.LOGICALREF = LG_009_01_INVOICE.CLIE" _
, _
"NTREF AND ((LG_009_01_INVOICE.TRCODE Between 1 And 4) AND (LG_009_CLCARD.CODE Like '320%') AND (LG_009_01_INVOICE.DATE_ Between " & tarih_bas & " And " & tarih_bit & " ORDER BY LG" _
, "_009_01_INVOICE.DATE_")
.Refresh BackgroundQuery:=False
beyrek1972
16-04-2008, 14:43
Merhab saygı değer arkadaşım
Microsoft Query' ye nerden girldiğini ve nasıl çalıştırıldığıyla ilgili yüzeysel olarak bilgi verirmisiniz
şimiden teşekkür derim
Zeki Gürsoy
19-04-2008, 08:02
Merhab saygı değer arkadaşım
Microsoft Query' ye nerden girldiğini ve nasıl çalıştırıldığıyla ilgili yüzeysel olarak bilgi verirmisiniz
şimiden teşekkür derim
Veri > Dış veri al özelliğini kullanabileceğiniz gibi, doğrudan "C:\Program Files\Microsoft Office\OFFICE11\MSQRY.EXE" uygulamasını çalıştırıp "Dosya" menusunden bağlanabilirsiniz.
beyrek1972
19-04-2008, 11:04
Merhaba göstermiş olduğunuz yakın ilgi ve alakadan dolayı çok teşekkür ederim.Benim sorunum galiba (ODBC) deki ayarları yapamadığımdan kaynaklanıyor.SQL SERVERİN içinde bulunan kullandığımız bazı programlar var ve mantık olarak anladığıma göre serverden yani ODBC den bu Proğramları eklemek veya tanıtmak gerekiyor. bunu yapmıyorum ve aşağıdaki hata yı veriyor.tekar teşkkür eder çalışmalarınızda başarılar dilerim hoşca kalın.
SQLState:28000
SQL SERVER hatası:18456
Zeki Gürsoy
19-04-2008, 11:20
SQL Server ODBC, win. içinde standart mevcuttur. cn.open kısmındaki ilgili yerleri doldurup test eder misiniz?
Sub Test()
Dim cn As Object
On Error Resume Next
Set cn = CreateObject("ADODB.Connection")
cn.Open _
"Driver={SQL Server};Server=myServerAddress;Database=myDataBase ;Uid=myUsername;Pwd=myPassword"
cn.Close
If Err.Number <> 0 Then MsgBox Err.Number & Chr(13) & Err.Description
End Sub
ya da;
Sub Test2()
Dim cn As Object
On Error Resume Next
Set cn = CreateObject("ADODB.Connection")
cn.Open _
"Driver={SQL Server};Server=myServerAddress;Database=myDataBase ;Trusted_Connection=Yes"
cn.Close
If Err.Number <> 0 Then MsgBox Err.Number & Chr(13) & Err.Description
End Sub
beyrek1972
19-04-2008, 14:22
Merhaba, değerli kardeşim kusura bakmayın sizinde kafanızı ağrıtıyorum.
Verdiğiniz kodaları makroya yazarak baktım ve aşağıdaki mesajı verdi
NESNE KAPALI OLDUĞUNDAN İŞLEME İZİN VERİLEMEZ
3704
Zeki Gürsoy
19-04-2008, 14:38
SQL Server versiyonu nedir? 2000-2005 ?
beyrek1972
20-04-2008, 08:39
sizi çok uğraştrıdım kusura bakmayın
versiyonu 2005
Zeki Gürsoy
20-04-2008, 08:57
Deneyin.
Sub Test()
Dim cn As Object
On Error Resume Next
Set cn = CreateObject("ADODB.Connection")
cn.Open _
"Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase ;Uid=myUsername;Pwd=myPassword;"
cn.Close
If Err.Number <> 0 Then
MsgBox Err.Number & Chr(13) & Err.Description
Else
MsgBox "Bağlantı başarılı.", vbInformation
End If
End Sub
vBulletin v3.7.2, Copyright ©2000-2012, Jelsoft Enterprises Ltd.