Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-12-2006
huwabe78 huwabe78 is offline
Miembro
 
Registrado: oct 2006
Posts: 18
Poder: 0
huwabe78 Va por buen camino
Unhappy !!!error de sintaxis en el INSERT INTO

Q tal, unas ves mas con dudas, ahora tengo un error de sintaxis en el INSERT INTO, ya no puedo mas de modificar y reveer cosas, por favor si alguien me puede echar una mano estaria mas que agradecido.

el codigo es el siguiente:

Código Delphi [-]
procedure TFacturacion.Button1Click(Sender: TObject);
var TOTALD: string;
    PRECIO_UNIT : string;
begin
ADOQuery1.close;
ADOQuery1.SQL.clear;
ADOQuery1.SQL.add ('SELECT * FROM productos');
ADOQuery1.SQL.add ('WHERE codigo = '+Edit1.Text+'');
try
ADOQuery1.open;
except
end;
if strtoint(Edit2.Text) > ADOQuery1.FieldByName('stock').AsInteger
then begin
showmessage ('INGRESE UNA CANTIDAD ACORDE A '+ADOQuery1.FieldByName('stock').AsString+' UNIDADES');
edit2.SetFocus;
edit2.SelectAll;
      end
else begin
TOTALD:= inttostr(ADOQuery1.FieldByName('precio').Value * ADOQuery1.FieldByName('stock').Value);
PRECIO_UNIT:=ADOQuery1.FieldByName('precio').Asstring;
ADOQuery3.close;
ADOQuery3.SQL.clear;
ADOQuery3.SQL.add ('INSERT INTO facturaciones (num_fact,producto,Imp_prod,cant_prod,cliente,fecha,importe_total)');
ADOQuery3.SQL.add ('VALUE ('+inttostr (numfac)+','+edit1.Text+','+PRECIO_UNIT+','+edit2.text+','+edit3.Text+','+datetostr(DATE)+','+TOTALD  +')');
try
ADOQuery3.ExecSQL;
except
end;
     end;
end;

Última edición por roman fecha: 04-12-2006 a las 20:50:09.
Responder Con Cita
  #2  
Antiguo 04-12-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola huwabe78
Tal vez si colocas la sentencia diferente se veria el error de sintaxis mejor.
Yo lo haria asi:
Código Delphi [-]
ADOQuery3.close;
ADOQuery3.SQL.clear;
ADOQuery3.SQL.Text'INSERT INTO facturaciones (num_fact,producto,Imp_prod,cant_prod,cliente,fecha,importe_total)' +
'VALUE ('+inttostr (numfac)+','+edit1.Text+','+PRECIO_UNIT+','+edit2.text+','+edit3.Text+','+datetostr(DATE)+','+TOTALD  ');
try
Tal vez asi puedas huvicar el error mejor.
Saludos
Responder Con Cita
  #3  
Antiguo 04-12-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Justo antes del ADOQuery3.ExecSQL coloca la línea:

Código Delphi [-]
ShowMessage(ADOQuery3.SQL.Text);

Esto te mostrará como queda el texto final de la consulta SQL. Muy posiblemente así te des cuenta de donde está el error (que generalmente se debe a que los valores del los Edits no son lo que uno piensa). Si aún así no percibes la causa, coloca aquí el texto del ShowMesaage para que podamos examinarlo.

Otra cosa: en lo sucesivo te pido que uses las etiquetas [delphi] para publicar código delphi tal como he hecho yo por tí en esta ocasión.

// Saludos
Responder Con Cita
  #4  
Antiguo 04-12-2006
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
pues a primera vista hay valores alfanumericos que no les pones comillas ademas de la fecha, y otra cosa, segun yo es VALUES no VALUE...
Responder Con Cita
  #5  
Antiguo 05-12-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Intenta usar parametros (Params)

Código Delphi [-]
With AdoQuery3 do 
begin
  ...
  ...
  SQL.add ('INSERT INTO facturaciones (num_fact, producto, Imp_prod, cant_prod, cliente, fecha, importe_total)');
  SQL.add ('VALUE (:fact, :Prod, :IProd, :CantProd, :Client, :fecha, :Total');
  With Parameters do
  begin
    ParamByName('fact').Value:=numfact;
    ParamByName('prod').Value:=Edit1.text;
    ParamByName('IProd').Value:=Precion_Unit;
    ParamByName('CantProd').Value:=Edit2.Text;
    ParamByName('Client').Value:1=Edit3.Text;
    ParamByName('Fecha').Value:=Date;
    ParamByName('total').Value:=TOTALD;
    ...
  end;
  ...
Quizas veas que es mas codigo...

Edito:Corrigiendo AsValue por Value
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!

Última edición por vtdeleon fecha: 05-12-2006 a las 00:54:14.
Responder Con Cita
  #6  
Antiguo 05-12-2006
nachoalbano nachoalbano is offline
Miembro
 
Registrado: sep 2006
Posts: 19
Poder: 0
nachoalbano Va por buen camino
Utilizando Parámetros?

Buenas.
Porqué no realizas en tiempo de diseño la escritura de la query en el atributo SQL del componente ADOQuery. Lo que tendrás que hacer es poner lo siguiente:

Código SQL [-]
 
INSERT INTO facturaciones (num_fact,producto,Imp_prod,cant_prod,cliente,fecha,importe_total)
VALUES (:numfac, aram1, aram2, :PRECIO_UNIT, aram3, aram4, getdate(), :TOTALD)

Los valores que tienen dos puntos adelante son parámetros, los mismos se configuran desde el atributo parameters del ADOQuery, donde podés seleccionar de que tipo son. Generalmente el componente detecta los tipos de datos esperados y configura automáticamente cada tipo de dato de cada parámetro.

Ahora lo que deberías hacer es cargar los valores de los parámetros con
Código Delphi [-]
ADOQuery1..Parameters.ParamByName('numfac').value = inttostr (numfac);
// asi con todos los parámetros

Espero que te ayude

PD: en la query habias puesto value y es values
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
Error de Sintaxis en MySQL The_figo MySQL 1 28-10-2006 03:26:29
Error de Sintaxis al Insertar datos a una tabla desde otra alastor SQL 9 28-09-2006 18:27:09
Error de Sintaxis en update SQL luxus SQL 3 08-08-2006 16:40:01
Error en sintaxis de query. Raro?? danytorres Varios 13 28-10-2005 21:36:00
Sql Error: error cannot insert a duplicate......................... inexperto SQL 2 04-06-2004 12:54:59


La franja horaria es GMT +2. Ahora son las 20:08:32.


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