vt den sorguda tarih hatası

Katılım
2 Mayıs 2015
Mesajlar
12
Excel Vers. ve Dili
2007
Merhabalar,
Sorguda bir yazım hatası var galiba siyah koyu renkle işaretlediğim satırda hata alıyorum. Kırmızı ile işaretlediğim yerde yazımda bir problem var sanırım ama çözemiyorum.


Hata mesajı:
(Sorgu ifadesi içindeki tarihte yazım hatası)


Kod:
Private Sub BringPPC() 'Pull Production values from database
  
    Dim cn As New ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim stDB As String, stSQL As String, stConn As String
    Dim ws As Worksheet
    Dim Search As String
    Dim StartDate
    Dim EndDate
     
    Set ws = ThisWorkbook.Worksheets("test")
    Search = ws.Range("C1").Value
     
    StartDate = ws.Range("D1").Value
    EndDate = ws.Range("E1").Value
     
 
 
    stDB = "C:\Database.accdb"
    stConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & stDB & ";"
     
    cn.ConnectionString = stConn
    cn.Open
     
    stSQL = "SELECT * "
    stSQL = stSQL & " FROM [FProductions] "
    stSQL = stSQL & " WHERE [Stations] ='" & Search & "'"
   [COLOR="Red"] stSQL = stSQL & " AND [Target Date] Between # " & StartDate & "# AND #" & EndDate & "#"[/COLOR]
     
    Set rs = New ADODB.Recordset
     
  [B]  rs.Open stSQL, cn[/B]
     
    ws.Range("A2").CopyFromRecordset rs
     
    rs.Close
     '
    cn.Close
     
    Set cn = Nothing
End Sub
 
Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Kod:
Private Sub BringPPC() 'Pull Production values from database
  
    Dim cn As New ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim stDB As String, stSQL As String, stConn As String
    Dim ws As Worksheet
    Dim Search As String
    Dim StartDate
    Dim EndDate
     
    Set ws = ThisWorkbook.Worksheets("test")
    Search = ws.Range("C1").Value
     
[COLOR="Red"]    StartDate = ws.Range("D1").Value
    EndDate = ws.Range("E1").Value[/COLOR]
     
 
 
    stDB = "C:\Database.accdb"
    stConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & stDB & ";"
     
    cn.ConnectionString = stConn
    cn.Open
     
    stSQL = "SELECT * "
    stSQL = stSQL & " FROM [FProductions] "
    stSQL = stSQL & " WHERE [Stations] ='" & Search & "'"
[COLOR="red"]    stSQL = stSQL & " AND [Target Date] Between # " & StartDate & "# AND #" & EndDate & "#"[/COLOR]
     
    Set rs = New ADODB.Recordset
     
    rs.Open stSQL, cn
     
    ws.Range("A2").CopyFromRecordset rs
     
    rs.Close
     '
    cn.Close
     
    Set cn = Nothing
End Sub


yukarıdaki kırmızı yerleri aşağıdakilerle değiştirirmisiniz.

Kod:
[COLOR="red"]StartDate = Format(ws.Range("D1").Value, "dd.mm.yyyy")
EndDate = Format(ws.Range("E1").Value, "dd.mm.yyyy")
stSQL = stSQL & " AND [Target Date] Between # " & """" & StartDate & """" & "# AND #" & """" & EndDate & """" & "#"[/COLOR]
 
Katılım
2 Mayıs 2015
Mesajlar
12
Excel Vers. ve Dili
2007
günaydın

Merhaba halit bey söylediklerinizi harfiyen uyguladım

Run-time error '-2147217913 (80040e07)':

Syntax error in date in query expression

hatası aldım. Ardından Database imde tarihlerin bulunduğu alandaki tarihleri gg.aa.yyyy olarak kayıt edilmeleri için access da tekar düzenledim ve denedim. Aynı hatayı almaya devam ediyorum.
 
Katılım
2 Mayıs 2015
Mesajlar
12
Excel Vers. ve Dili
2007
şöyle söyleyebilirim sorgunun yapıldığı alandaki tüm kayıtlar gg.aa.yyyy formatında kayıtlılar.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,644
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Örnek dosya ekleyebilir misiniz?
 
Katılım
2 Mayıs 2015
Mesajlar
12
Excel Vers. ve Dili
2007
Calisma Dosyamin ve vt min boyutu yuksek ornek bir dosya ve vt hazirlayip gondereyim.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,644
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Merhaba,

Aşağıdaki satırı değiştirmeniz yeterli, tarih formatı ile alakalı değil. Sayı olan bir değişkeni ' işareti sorguya koyamazsınız.

Kod:
    stSQL = stSQL & " WHERE [PART ID] =" & Search & " "
 
Katılım
2 Mayıs 2015
Mesajlar
12
Excel Vers. ve Dili
2007
Merhaba,

Aşağıdaki satırı değiştirmeniz yeterli, tarih formatı ile alakalı değil. Sayı olan bir değişkeni ' işareti sorguya koyamazsınız.

Kod:
    stSQL = stSQL & " WHERE [PART ID] =" & Search & " "

ekledim.

"Sorgu ifadesi içindeki Tarihde söz dizimi hatası" veriyor.

 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,644
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Ümit bey merhaba,

Satırı aşağıdaki gibi değiştirin.Birde access'te finish date içindeki tarihlerin içinde saatte var, sonuç gelmesini istiyorsanız saatleri silin yada 16.05.2015 tarih aralığında çalıştırın.

Kod:
    stSQL = stSQL & " AND cdate([FINISH DATE]) Between '" & StartDate & "'  AND   '" & EndDate & "' "
 
Katılım
2 Mayıs 2015
Mesajlar
12
Excel Vers. ve Dili
2007
Ümit bey merhaba,

Satırı aşağıdaki gibi değiştirin.Birde access'te finish date içindeki tarihlerin içinde saatte var, sonuç gelmesini istiyorsanız saatleri silin yada 16.05.2015 tarih aralığında çalıştırın.

Kod:
    stSQL = stSQL & " AND cdate([FINISH DATE]) Between '" & StartDate & "'  AND   '" & EndDate & "' "
allaha şükürler olsun. nihayet.
sağolun çok zahmet verdiniz.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,389
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Tarih değeri "#" ile kullanılacaksa, tarih biçimi bölü işaret ayracı ile "mm/dd/yyyy" olarak kulanılmalı. Tam olarak bugünün tarihi ile:

#05/16/2015# veya #5/16/2015#

Diğer bir kullanım da tarihleri sayıya çevirmek:

Saatler de dikkate alınacaksa, Clng yerine Cdbl fonksiyonu kullanılmalı.

Kod:
.... where tarih between " & Clng(tar1) & " And " & Clng(tar2)

Normalde tarih kriteleri tek tırnak işaretleri ile kullanılır. Ancak VT sistemine göre veya VT sisteminin setup aşamasında Türkiye standartları verilmediğinde sıkıntılar ortaya çıkmakta.

MS SQL Server kurulumunda doğru ayar yapıldıya,
Kod:
.... where tarih between '01.01.2015' And '16.05.2015'
kullanımı doğrudur. Eğer doğru yapılamadıysa Execute hata verecek, kullanım aşağıdaki gibi olacaktır.
Kod:
.... where tarih between '2015-01-01' And '2015-05-16'
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Dosyanızı incelediğimde referanslar eksik ve data sayfasındaki tabloda sütün isimlerinde boşluklar mevcut bu durumda veri almamaktadır.

STATION
PART ID
OP CODE
ST
PCS
START DATE
SIMULATION DATE
FINISH DATE
yukarıdaki sütün başlıkları aşağıdaki gibi olmalı yani sütun isimlerinde boşluklar olmamalı

STATION
PART_ID
OP_CODE
ST
PCS
START_DATE
SIMULATION_DATE
FINISH_DATE
Ekli dosyayı irdeleyiniz.

kod
Kod:
Sub aaaBringPPC() 'Pull Production Values from database
     '
     'SET VARIABLES
     '
    Dim cn As New ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim stDB As String, stSQL As String, stConn As String
    Dim ws As Worksheet
    Dim Search As String
    Dim StartDate
    Dim EndDate
     
    Set ws = ThisWorkbook.Worksheets("test")
    Search = ws.Range("C1").Value
     
    StartDate = CLng(Format(ws.Range("D1").Value, "dd.mm.yyyy"))
    EndDate = CLng(Format(ws.Range("E1").Value, "dd.mm.yyyy"))
     
     'NAME DATABASE
     'stDB = ThisWorkbook.Path & "\Database.accdb" '"C:\Database.accdb"
    stDB = "C:\Database.accdb"
    stConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & stDB & ";"
     
    cn.ConnectionString = stConn
    cn.Open
     
    stSQL = "SELECT * "
    stSQL = stSQL & " FROM [Finished] "
    stSQL = stSQL & " WHERE [PART_ID] =" & Search
    stSQL = stSQL & " or START_DATE >= " & StartDate & " AND START_DATE" & "<=" & EndDate
     
    Set rs = New ADODB.Recordset
    
    rs.Open stSQL, cn
     
    ws.Range("A2").CopyFromRecordset rs
     
    rs.Close
     '
    cn.Close
     
    Set cn = Nothing
End Sub
 

Ekli dosyalar

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
alternatif olarak birde bu kodu dene

Kod:
Sub aaaBringPPC()

Range("A2:I500").ClearContents

Dim cn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim stDB As String, stSQL As String, stConn As String
Dim ws As Worksheet
Dim Search As String
Dim StartDate
Dim EndDate

Set ws = ThisWorkbook.Worksheets("test")
Search = ws.Range("C1").Value

sayfa = "Finished"
aranankolon1 = "PART_ID"
aranankolon2 = "START_DATE"

StartDate = (Format(ws.Range("D1").Value, "dd.mm.yyyy"))
EndDate = (Format(ws.Range("E1").Value, "dd.mm.yyyy"))

stDB = "C:\Database.accdb"
stConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & stDB & ";"


cn.ConnectionString = stConn
cn.Open

stSQL = "SELECT * FROM [" & sayfa & "]  where " & aranankolon1 & "=" & Search & " and cvdate(" & aranankolon2 & ")>=cvdate(' " & StartDate & " ') and cvdate(" & aranankolon2 & ")<=cvdate(' " & EndDate & " ')"

Set rs = New ADODB.Recordset

rs.Open stSQL, cn

ws.Range("A2").CopyFromRecordset rs

rs.Close
'
cn.Close

Set cn = Nothing



End Sub
 
Üst