Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel helpt u bij het oplossen van het probleem dat optreedt wanneer u een ODBC-query uitvoert op Visual FoxPro-tabellen met behulp van het Visual FoxPro ODBC-stuurprogramma.
Oorspronkelijke productversie: Visual FoxPro
Oorspronkelijk KB-nummer: 229854
Symptomen
Wanneer u een ODBC-query uitvoert op Visual FoxPro-tabellen met behulp van het ODBC-stuurprogramma van Visual FoxPro, worden er geen records geretourneerd wanneer de WHERE-component een datum bevat die niet de AMERIKAANSE datumnotatie heeft.
Oorzaak
Het Visual FoxPro ODBC-stuurprogramma accepteert alleen datums in een strikte AMERIKAANSE datumnotatie.
Resolutie
Converteer alle datums die worden doorgegeven in de WHERE-component van de SELECT-SQL-instructie naar een AMERIKAANSE datumnotatie.
Toestand
Dit is zo ontworpen.
Meer informatie
De standaardinstelling voor Visual FoxPro-datum is AMERICAN. Datumnotaties kunnen echter worden ingesteld op de volgende formaten:
Datuminstelling | Datumnotatie |
---|---|
AMERIKAANS | mm/dd/jj |
American National Standards Institute (ANSI) | jj.mm.dd |
BRITSE/FRANSE | dd/mm/jj |
DUITS | dd.mm.jj |
ITALIAANS | dd-mm-jj |
JAPAN | jj/mm/dd |
TAIWAN | jj/mm/dd |
Verenigde Staten van Amerika | mm-dd-jj |
MDY | mm/dd/jj |
DMY | dd/mm/jj |
YMD | jj/mm/dd |
KORT | Korte datumnotatie bepaald door de korte datuminstelling in het Windows Configuratiescherm. |
LANG | Lange datumnotatie bepaald door de lange datuminstelling in het Windows-configuratiescherm. |
Stappen voor het reproduceren van gedrag
Maak een programmabestand met de naam Odbctest.prg met behulp van de volgende code:
CLEAR DO CASE CASE "6.0"$VERSION() lcConnStr="DRIVER={Microsoft Visual FoxPro Driver};" + ; "Exclusive=No;SourceType=DBF;SourceDB="+HOME(2)+"DATA" CASE "5.0"$VERSION() lcConnStr="DRIVER={Microsoft Visual FoxPro Driver};" + ; "Exclusive=No;SourceType=DBF;SourceDB="+HOME()+"SAMPLES\DATA" CASE "3.0"$VERSION() lcConnStr="DRIVER={Microsoft Visual FoxPro Driver};" + ; "Exclusive=No;SourceType=DBF;SourceDB="+HOME()+"SAMPLES\DATA" OTHERWISE && Version is VFP 7.0,8.0, or 9.0 lcConnStr="DRIVER={Microsoft Visual FoxPro Driver};" + ; "Exclusive=No;SourceType=DBF;SourceDB="+HOME(2)+"DATA" ENDCASE *!* Create An ADO Connection oConnection=CREATEOBJECT("ADODB.Connection") oConnection.ConnectionString = lcConnStr oConnection.CursorLocation = 3 oConnection.OPEN * lcSQL="SELECT * FROM ORDERS WHERE ORDER_DATE < {07/22/93}" lcSQL="SELECT * FROM ORDERS WHERE ORDER_DATE < {93/07/22}"*!* Create An ADO recordset rs=CREATEOBJECT("ADODB.Recordset") rs.activeconnection = oConnection rs.CursorLocation = 3 rs.cursortype = 1 rs.LockType = 3 rs.OPEN(lcSQL) IF !rs.EOF rs.movefirst DO WHILE !rs.EOF ? rs.FIELDS(0).VALUE rs.movenext ENDDO ENDIF rs.CLOSE oConnection.CLOSE
U ziet dat er geen records worden geretourneerd of weergegeven.
Markeer de volgende regel code als commentaar:
lcSQL="SELECT * FROM ORDERS WHERE ORDER_DATE < {93/07/22}"
Verwijder commentaar bij de volgende regel code:
lcSQL="SELECT * FROM ORDERS WHERE ORDER_DATE < {07/22/93}"
Voer het programma opnieuw uit en kijk of er gegevens worden geretourneerd en weergegeven op het scherm.