Página 1 de 1
erro de data SQL Server / HwGui
Enviado: 18 Fev 2024 00:48
por cjp
Pessoal, alguém poderia me ajudar a descobrir onde estaria o erro neste trecho:
Código: Selecionar todos
cProc=cnSQL:execute("select texto from tabela where dtuso='"+alltrim(str(year(date())))+"-"+substr(dtoc(date()),4,2)+"-"+substr(dtoc(date()),1,2)+"'")
Tá dando o seguinte erro:
Error WINOLE/1007 [Microsoft][ODBC SQL Server Driver][SQL Server]Falha ao converter data e/ou hora da cadeia de caracteres. (0x80040E07): Microsoft OLE DB Provider for ODBC Drivers (DOS Error -2147352567)
Não dá erro se eu usar assim:
Código: Selecionar todos
cProc=cnSQL:execute("select texto from tabela where dtuso='2024-02-18')
Na tabela em questão, o campo dtuso é date.
Alguém poderia me ajudar?
erro de data SQL Server / HwGui
Enviado: 18 Fev 2024 04:22
por alxsts
Olá!
O erro certamente é consequência de uma malformação na tua string. Isto e fácil de ver. Basta exibir na tela o conteúdo dela...
Causa provável:
Qual o formato de data está ativo?
O padrão é mm/dd/aa (American). Se Set Century estiver ON será mm/dd/aaaa. Neste caso, para a data 02/18/2024 o teu codigo retornará 2024-18-02. Percebe que é uma data inválida? Não existe o mês número 18...
Soluções:
Inclua no teu código as linhas abaixo, caso não existam:
ou
Com as formas acima, o teu código funcionará. Remova esta chamada à função AllTrim (). Nao tem necessidade dela. Mas... o teu código pode ser melhorado:
Formas mais práticas, sem precisar de nenhuma das alternativas acima:
Código: Selecionar todos
cProc=cnSQL:execute("select texto from tabela where dtuso='" + Transform( DtoS( Date() ), "@R 9999-99-99" ) + "'"
Ou
Código: Selecionar todos
cProc=cnSQL:execute("select texto from tabela where dtuso='" + Str( Year ( Date (), 4 ) + "-" + StrZero( Month ( Date () ) + "-" + StrZero( Day ( Date () ) + "'"
erro de data SQL Server / HwGui
Enviado: 18 Fev 2024 10:52
por JoséQuintas
NÃO.
Acho esquisito, mas parece que é normal o Inácio esquecer das coisas.
Lembra ? acesso sem instalar nada, SQL Server poderia ser opção por vir pré-instalado no Windows, etc...
Esse erro é daquela época, e já recebeu ajuda naquela época.
Continua sendo o mesmo problema e a mesma solução: é defeito em certos clientes SQL Server, precisa instalar versão mais nova do cliente/ODBC.
Só mudou que agora postou em hwgui, e da outra vez era console e acho que foi por whatsapp.
O jeito dele converter a data também é perigoso, por obrigar o padrão Brasil.
Seria mais sensato usar Year(), Month() e Date(), ou o DTOS() igual mostrou, talvez defindo tamanhos pra evitar imprevistos,
Estes funcionam sempre, seja qual for o formato da data, só não resolvem quando o problema é no cliente/ODBC, ou a exceção de data vazia o fora do limite aceito.
erro de data SQL Server / HwGui
Enviado: 18 Fev 2024 11:39
por sygecom
Inacio,
Se estiver usando SQLRDD use a function sr_cdbvalue() para formatar os textos de variáveis, exemplo:
Código: Selecionar todos
cProc=cnSQL:execute("select texto from tabela where dtuso='"+sr_cdbvalue(date()))
erro de data SQL Server / HwGui
Enviado: 19 Fev 2024 00:40
por cjp
Realmente, faltava o set date brit aqui, que uso sempre nos meus programas em console.
E realmente a solução com dtos() é bem melhor, funcionou super bem.
Não, Quintas, a questão aqui não é aquele problema do SQL Server que te pedi ajuda antes.
Não estou usando SQLRDD.
Agradeço muito a ajuda de todos.