CONSULTA POR DATA

PAULOHSV 06/09/2007 10:56:29
#234433
To mechendo em um programa e a data é gravada no banco da dados firebird no formato varchar. E agora preciso fazer uma consulta por data, mas quando faço a sql.

 sql = "select A.id_consulta,a.cod_paciente, B.nome as nomepaciente, a.cod_medico,c.nome as nomemedico,a.data,a.hora,a.ficha  from (cad_consultas A  left outer join cad_pacientes B on B.id_paciente=A.cod_paciente ) LEFT OUTER JOIN CAD_MEDICOS c ON  a.COD_MEDICO=c.id_medico where a.data = " & Format(txtdata.Text, "mm/dd/yyyy") 


Da uma mensagem de erro que é conversion error from string, ja tentei mudar o formato, tentei o cdate, cvar e nada adintou, mas se eu fizer

         sql = "select A.id_consulta,a.cod_paciente, B.nome as nomepaciente, a.cod_medico,c.nome as nomemedico,a.data,a.hora,a.ficha  from (cad_consultas A  left outer join cad_pacientes B on B.id_paciente=A.cod_paciente ) LEFT OUTER JOIN CAD_MEDICOS c ON  a.COD_MEDICO=c.id_medico where a.data = " & "'txtdata.text'"  


Não da erro mas tambem não acha nada. Alguem tem alguma sugestão que não seja mudar o campo data para date, pois para fazer isto terei que mecher em muitas partes do programa.
USUARIO.EXCLUIDOS 06/09/2007 11:10:24
#234436
Resposta escolhida
tente assim:

sql = "select A.id_consulta,a.cod_paciente, B.nome as nomepaciente, a.cod_medico,c.nome as nomemedico,a.data,a.hora,a.ficha from (cad_consultas A left outer join cad_pacientes B on B.id_paciente=A.cod_paciente ) LEFT OUTER JOIN CAD_MEDICOS c ON a.COD_MEDICO=c.id_medico where cast ('a.data' as date) = '" & Format(txtdata.Text, "mm/dd/yyyy") & "'"


O maior problema é ter o campo data não sendo date ou timestamp. Daí é necessário converter a data (varchar) para data (date) e fazer a comparação entre aspas simples e mm/dd/yyyy.

Espero que funcione.

Flw.


PAULOHSV 06/09/2007 13:53:01
#234506
Não funcionou, troquei o campo para date e quando faço.
   
sql = "select A.id_consulta,a.cod_paciente, B.nome as nomepaciente, a.cod_medico,c.nome as nomemedico,a.data,a.hora,a.ficha from (cad_consultas A left outer join cad_pacientes B on B.id_paciente=A.cod_paciente ) LEFT OUTER JOIN CAD_MEDICOS c ON a.COD_MEDICO=c.id_medico where a.data = " & Format(txtdata.Text, "mm/dd/yyyy")


Agora da o erro conversion error from string"0", algum ja viu este erro?
USUARIO.EXCLUIDOS 06/09/2007 14:15:24
#234513
Acho que vc precisa colocar a data entre aspas simples Paulo.
USUARIO.EXCLUIDOS 06/09/2007 14:33:06
#234519
tente assim:

sql = "select A.id_consulta,a.cod_paciente, B.nome as nomepaciente, a.cod_medico,c.nome as nomemedico,a.data,a.hora,a.ficha from (cad_consultas A left outer join cad_pacientes B on B.id_paciente=A.cod_paciente ) LEFT OUTER JOIN CAD_MEDICOS c ON a.COD_MEDICO=c.id_medico where a.data = '" & Format(txtdata.Text, "mm/dd/yyyy") & "'"
PAULOHSV 06/09/2007 16:09:30
#234557
Muito obrigado pela ajuda.
Tópico encerrado , respostas não são mais permitidas