Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-12-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Sql access a Firebird 2 (tercera consulta)

Hola a todos
Bueno sigo con esto, ahora tengo un mensaje que no entiendo la razon.
Tengo esta sentencia:
Código Delphi [-]
AdoQuery1.SQL.Text := 'Insert into TransMaterial Values ( '+EdCodigo.Text+ ', '+DateToStr(DTP1.Date)+', '+QuotedStr(EdMaterial.Text)+', '+
QuotedStr(EdReferencia.Text)+', '+QuotedStr(EdSolicita.Text)+', '+QuotedStr(CBtipo.Text)+' ,'+NEdCantidad.Text+', '+QuotedStr(EdUsuario.Text)+', '+QuotedStr(EdNotas.Text)+')';
Showmessage(AdoQuery1.SQL.CommaText);
AdoQuery1.ExecSQL;
Como veis le puse un mensaje para ver que me enviaba, aparentemente, la informacion es la correcta, los campos son los correctos y los tipos tambien.
Me envia este error:
Cita:
Convertion error from string ''0''.
No entiendo de donde sale el error, en ningun campo hay un numero o se genera un numero cero ( 0 ).
No tengo ningun campo que pudiera ser string y que me genere un 0.
Que podra ser?
Saludos
Responder Con Cita
  #2  
Antiguo 26-12-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.560
Poder: 25
egostar Va camino a la fama
Mucho gusto de saludarlo por este medio amigo Caral, podrías pegar aquí lo que sale en tu ventana de mensaje donde muestras el resultado de la consulta?

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 27-12-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Hola Caral.

Al no conocer tu estructura, no tengo idea de donde venga el error. En casos como este, para no cambiar el código que ya tenes, podrías no solo mostrar la sentencia SQL generada sino copiarla al clipboard, de manera que podás pegarla en isql o en el administrador de la BD que estes usando.

Esto lo conseguís añadiendo la unidad clipboard al uses de tu unidad y luego el código:

Código Delphi [-]
  clipbrd.AsText := AdoQuery1.SQL.Text;

Luego, ctrl+v y quizás ya se verá mas claramente donde está el error.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 27-12-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
He seguido tu sugerencia y me ha servido de mucho.
El asunto esta si:
El datetimepicker genera esta fecha 27/12/2007.
Me he fijado que firebird no acepta ese formato, lo que acepta es '27.12.2007' entre comillas simples.
El asunto es que le puedo dar formato asi:
Código SQL [-]
ShortDateFormat := 'dd.mm.yyyy';
Esto me genera la fecha como se necesita, pero sin las comillas.
Como le pongo las comillas que me hacen falta?.
Por que comillas en la fecha?
Este es el resultado de lo que me genera la sentencia sql:
Código SQL [-]
Insert into TransMaterial Values (102351, 27.12.2007, '19301JETGM', 'nada', 'carlos', 'Compra' ,88, 'carlos', '')
Lo que me faltaria es poner las comillas en la fecha.
Este seria el resultado de lo que necesito, no se por que:
Código SQL [-]
Insert into TransMaterial Values (102351, '27.12.2007', '19301JETGM', 'nada', 'carlos', 'Compra' ,88, 'carlos', '')
Otra cosa seria saber si son necesarias o depende de algo mas?.
Gracias por la ayuda.
Saludos
Responder Con Cita
  #5  
Antiguo 27-12-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
te recomiendo que uses parámetros, así:

primero en un editor de querys (ibXpert o como se llame) comprueba algo como esto
Código SQL [-]
Insert into TransMaterial Values (:id, :fecha, :codigo, :comentario, :vendedor, :accion, :cantidad, :comprador, :comentario1)

luego en delphi puede hacer lo siguiente:

Código Delphi [-]
     ibQuery.Sql.add(Insert into TransMaterial Values (:id, :fecha, :codigo, :comentario, :vendedor, :accion, :cantidad, :comprador, :comentario1));
   ibQuery.ParamByName('id').asInteger := 102351;
   ibQuery.ParamByName('fecha').asDate := DataTimePicker.Date;
   ibQuery.ParamByName('codigo').asString := '19301JETGM';
   ibQuery.ParamByName('comentario').asString := 'nada';
   ibQuery.ParamByName('vendedor').asString:= 'carlos';
y así por cada uno de los parámetros... puede ser en un principio muy largo, pero en el futuro es mas cómodo porque solo tendrá un solo código de inserción y solo asignara nuevamente cada parámetro
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #6  
Antiguo 27-12-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
otra recomendación amigo caral, no uses ado, para eso existen componentes nativos como los mdo o los ibX, tienen mejor rendimiento y explotan mejor el firebird que el ado
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #7  
Antiguo 27-12-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Hola.

Apoyo la recomendación de RONPABLO, con respecto del uso de parámetros. Eso además, te libera de determinar el formato de fecha que "entendrá" la base de datos, pues la fecha regularmente pasa de modo binario y es el propio motor el encargado de negociar el formato.

De cualqueir manera, si no hay de otra que pasar la fecha de manera textual, he notado que casi todos los motores la aceptan en formato 'yyyy-mm-dd'. Comento esto porque en algunos motores, como SQL Server u Oracle, el formato dependerá de la configuración del sistema base o de la configuración del propio motor, por lo que lo que funcione contra el SQL Server de tu máquina, no necesariamente funcionará contra el servidor del cliente. (Se que no es tu caso, caral, pero aclaro para el resto de la comunidad).

Finalmente, podes añadir las comillas simples valiéndote de la función QuotedStr.

Es decir, donde tenés DateToStr(Fecha), cambialo por QuotedStr(DateToStr(Fecha)), y seguro que funcionará.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta en access Joseph Merrick SQL 0 15-12-2006 03:34:22
Seccion PocketStudio (PalmOS) Tercera Entrega fredo Varios 0 20-09-2006 23:56:14
Tercera llamada, tercera roman Noticias 28 11-07-2005 20:05:22
Duda con una consulta en access bustio Tablas planas 2 14-03-2005 15:51:35
consulta con Access y ADO JODELSA Conexión con bases de datos 5 24-10-2003 17:24:19


La franja horaria es GMT +2. Ahora son las 00:40:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi