A consulta do Driver ODBC do Visual FoxPro falhará se o formato de data não for o formato de data americano
Este artigo ajuda você a resolve o problema que ocorre ao executar uma consulta ODBC em tabelas do Visual FoxPro usando o Driver ODBC do Visual FoxPro.
Versão original do produto: Visual FoxPro
Número de KB original: 229854
Sintomas
Ao executar uma consulta ODBC em tabelas do Visual FoxPro usando o Driver ODBC do Visual FoxPro, nenhum registro é retornado quando a cláusula WHERE inclui uma data que não esteja no formato de data americana.
Motivo
O Driver ODBC do Visual FoxPro só aceita datas em um formato de data americano rigoroso.
Resolução
Converta todas as datas passadas na cláusula WHERE da instrução SELECT-SQL em um formato de data americano.
Status
Este é o comportamento padrão.
Mais informações
A configuração de data padrão do Visual FoxPro é AMERICAN. Os formatos de data, no entanto, podem ser definidos para os seguintes formatos:
Configuração de data | Formato de Data |
---|---|
AMERICANO | mm/dd/yy |
ANSI | yy.mm.dd |
BRITÂNICO/FRANCÊS | dd/mm/yy |
ALEMÃO | dd.mm.yy |
ITALIANO | dd-mm-yy |
JAPÃO | yy/mm/dd |
TAIWAN | yy/mm/dd |
EUA | mm-dd-yy |
MDA | mm/dd/yy |
DMY | dd/mm/yy |
YMD | yy/mm/dd |
SHORT | Formato de data curta determinado pelo Windows Painel de Controle configuração de data curta. |
LONGAS | Formato de data longa determinado pela configuração de data longa do Windows Painel de Controle. |
Etapas para reproduzir o comportamento
Crie um arquivo de programa chamado Odbctest.prg, usando o seguinte código:
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
Observe que nenhum registro é retornado ou exibido.
Comente a seguinte linha de código:
lcSQL="SELECT * FROM ORDERS WHERE ORDER_DATE < {93/07/22}"
Descompactar a seguinte linha de código:
lcSQL="SELECT * FROM ORDERS WHERE ORDER_DATE < {07/22/93}"
Execute novamente o programa e observe que os dados são retornados e exibidos na tela.