Microsoft Query'de tarihi excelden okutmak. [Archive] - Excel Forum

PDA

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

Rafet
14-04-2008, 17:02
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.

Rafet
14-04-2008, 17:04
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


Özel Arama