Delen via


Visual FoxPro ODBC Driver-query mislukt als het datumformaat niet het Amerikaanse datumformaat is.

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

  1. 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
    
  2. U ziet dat er geen records worden geretourneerd of weergegeven.

  3. Markeer de volgende regel code als commentaar:

    lcSQL="SELECT * FROM ORDERS WHERE ORDER_DATE < {93/07/22}"
    
  4. Verwijder commentaar bij de volgende regel code:

    lcSQL="SELECT * FROM ORDERS WHERE ORDER_DATE < {07/22/93}"
    
  5. Voer het programma opnieuw uit en kijk of er gegevens worden geretourneerd en weergegeven op het scherm.