Delphi - consulta sql

 
Vista:

consulta sql

Publicado por julio ramos (22 intervenciones) el 24/08/2005 17:26:50
amigos,

quiero saber como es la sintaxis en sql para pasar los parametros
quiero hacer un insert en una tabla pasandoles algunos edit como son:
articulo.text,precio.text etc.

gracias

codigo

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO reporte (ArticuloID,detalle,Precio,cantidad,Total');
Query1.SQL.Add('VALUES articulo.Text;detalle.Text;precio.Text;cantidad.Text;total.Text;);');
Query1.ExecSQL;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:consulta sql

Publicado por BigLuis (713 intervenciones) el 24/08/2005 17:57:56
Los parametros se nombran dentro de la sentencia SQL anteponiendoles dos puntos : por lo que quedaria mas o menos asi
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO reporte (ArticuloID,detalle,Precio,cantidad,Total');
Query1.SQL.Add('VALUES :Arti,:deta,:preci,:canti,:tot;);');
Query1.Parambyname('Arti').value:=Articulo.text;
etc...........................................................
Query1.ExecSQL;
Pruebalo y suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta sql

Publicado por kikonmx (8 intervenciones) el 24/08/2005 18:07:01
para empezar debes tener en cuenta dos cosas

Tipo de datos que maneja el campo ( en la base de datos donde vas a ingresar la información )
La instrucción en si, es una cadena.

Ahora bien, para agregar datos a un campo de texto, lo debes hacer entre comillas, es decir, si vas a ingresar el valor TEST a la base de datos lo debes hacer como "TEST".

Otra cosa, para poner el texto de los controles dentro de la cadena necesitas concatenarla, de lo contrario te va almacenar las cadenas como Valor.Text en la base de datos, en tu caso serìa más o menos así:

Query1.SQL.Add('VALUES "' + articulo.Text + '"; "' + detalle.Text + '"; ' + precio.Text + '; ' + cantidad.Text + '; ' + total.Text + ');');

ahora, no recuerdo si los separadores son (,) o (;)

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta sql

Publicado por julio ramos (22 intervenciones) el 24/08/2005 18:43:26
De las dos manera me da error en la primera me dice:

incorrect syntax near the keyword 'values'


//Query1.Close;
//Query1.SQL.Clear;
//Query1.SQL.Add('INSERT INTO reporte (ArticuloID,Precio,cantidad,Total');
//Query1.SQL.Add('VALUES "' + codigo_articulo.Text + '", ' + precio.Text + ', ' + cantidad.Text + ', ' + total.Text + ');');
//Query1.ExecSQL;

en esta me da varios errores de sintaxis

Query1.SQL.Add('INSERT INTO reporte (ArticuloID,Precio,cantidad,Total');
Query1.SQL.Add('VALUES :Arti,:deta,:preci,:canti,:tot;);');
Query1.Parambyname('Arti').codigo_articulo.Text;('preci').value:=precio.text;('canti').value:=cantidad.text;('tot').value:=total.text;
Query1.ExecSQL;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta sql

Publicado por Elena (330 intervenciones) el 25/08/2005 00:01:26
with Query, SQL do
begin
close; clear;
add(' INSERT INTO Reporte (ArticuloID,Precio,cantidad,Total) '+
' VALUES ('+#39+editArticulo.Text+#39+', '+
editPrecio.Text+', '+editCantidad.Text+', '+editTotal.Text +')' );
ExecSQL;
end;

Si el código de artículo NO es string quítale el #39 (las comillitas) y la 2da. línea quedaría:
' VALUES ('+editArticulo.Text+', '+

Espero que esto te sirva.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta sql

Publicado por julio ramos (22 intervenciones) el 25/08/2005 03:15:54
Gracias por responder

Mira este el el codigo

procedure TForm1.Button1Click(Sender: TObject);
begin

with Query, SQL do
begin
close;
clear;
add(' INSERT INTO Reporte (ArticuloID,Precio,cantidad,Total) '+
' VALUES ('+#39+editcodigo_Articulo.Text+#39+', '+editPrecio.Text+', '+editCantidad.Text+', '+editTotal.Text +')' );
ExecSQL;
end;

este son los errores que me muestra corriendolo

[Error] Cobros.pas(408): Declaration expected but 'WITH' found
[Error] Cobros.pas(422): Undeclared identifier: 'clear'
[Error] Cobros.pas(423): Undeclared identifier: 'add'
[Error] Cobros.pas(424): Undeclared identifier: 'editcodigo_Articulo'
[Error] Cobros.pas(424): Missing operator or semicolon
[Error] Cobros.pas(424): Undeclared identifier: 'editPrecio'
[Error] Cobros.pas(424): Missing operator or semicolon
[Error] Cobros.pas(424): Missing operator or semicolon
[Error] Cobros.pas(424): Missing operator or semicolon
[Error] Cobros.pas(467): '.' expected but ';' found
[Fatal Error] Sistema_Cobros_unicaribe.dpr(5): Could not compile used unit 'Cobros.pas'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta sql

Publicado por BigLuis (713 intervenciones) el 25/08/2005 08:49:08
>>>>en esta me da varios errores de sintaxis

Query1.SQL.Add('INSERT INTO reporte (ArticuloID,Precio,cantidad,Total');
Query1.SQL.Add('VALUES :Arti,:deta,:preci,:canti,:tot;);');
ESTO NO LO PUSE YO>>>>Query1.Parambyname('Arti').codigo_articulo.Text;('preci').value:=precio.text;
¿QUE ES ESTO?>>>>>>>>>('canti').value:=cantidad.text;('tot').value:=total.text; Query1.ExecSQL; <<<<

No me extraña que te de errores
Los parametros hay que pasarlo uno por uno y ten cuidado porque los nombres son sensibles a mayusculas y minusculas
Query1.Parambyname('Arti').asstring:=Articulo.Text;
Query1.Parambyname('deta').asstring:=Detalle.Text;
etc..................................................................
Esto tiene que funcionar ya que lo lo he utilizado miles de veces.Si a ti no te va mira la ayuda de tubase de datos no sea que no soporte las sentencias sql de esta manera.
Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta sql

Publicado por julio ramos (22 intervenciones) el 25/08/2005 14:41:17
Gracias Luis por tu ayuda

Mira la base de datos que estoy utilizando es MSSQL server 2000
He realizado algunas prueba de inserccion y funcionan bien con sentencia sql, pero no de la manera pasando estos parametros.

el codigo lo tengo de esta manera, cuando ejecuto el button me dice :
-------------------------------------------------------------------------------------------------
raised exception class EDBEngineError with message 'General SQl error.
Incorrect syntax near the keyword 'VALUES';; process. use step or run to continues.
-------------------------------------------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO reporte (ArticuloID,detalle,Precio,cantidad,Total');
Query1.SQL.Add('VALUES :Arti,:deta,:preci,:canti,:tot;);');
Query1.Parambyname('Arti').asstring:=codigo_articulo.Text;
Query1.Parambyname('deta').asstring:=Detalle.Text;
Query1.Parambyname('preci').asstring:=precio.Text;
Query1.Parambyname('canti').asstring:=cantidad.Text;
Query1.Parambyname('tot').asstring:=total.Text;
Query1.ExecSQL;
end;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta sql

Publicado por skull leader (284 intervenciones) el 25/08/2005 16:28:52
bueno, y ya definiste que tipo de dato es?

por que veo que le envias solo strings, supongo que precio y esos campos no son tipo string o varchar...

segun hayas definido tus campos, envias los parametros.
supongamos que ArticuloID es entero.

Query1.ParamByName('Arti').AsInteger := StrToInt(codigo_articulo.Text);

suponiendo tambien que estas enviando lo que capturaste en un Edit.
asi hazlo para cada dato, ya sea flotante, entero, o el que sea.

bueno, es lo que yo vi en esto.
si no es lo que preguntas, no me culpes, hace 2 días rompi mis lentes :P y aun no me los reponen

espero sirva de algo
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta sql

Publicado por julio ramos (22 intervenciones) el 25/08/2005 16:46:48
Gracias a todos por la ayuda

el codigo me funciono de la siguiente manera

Query1.Close;
Query1.SQL.Clear;

Query1.SQL.Add('INSERT INTO reporte (ArticuloID,Precio,cantidad,');
Query1.SQL.Add('Total) VALUES ("' + codigo_articulo.Text + '",' + precio.Text + ',' + cantidad.Text + ',' + total.Text + ' );');
Query1.ExecSQL;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

gracias a todos

Publicado por de Iraim (14 intervenciones) el 21/06/2006 05:31:54
gracias a todos
llevo todo un dia rompiendome la cabeza con un problema similar y al fin lo he logrado
a mi me funciono poniento el codigo de esta forma

procedure TForm2.Button1Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add(' INSERT INTO cliente (nombre,apellidos) '+' VALUES ('+#39+edit1.Text+#39+', '+#39+edit2.Text+#39+')' );
ADOQuery1.ExecSQL;
ADOTable1.Active:=false;
ADOTable1.Active:=true
end;

end.

un saludo y una vez más gracias
agradecido elena
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar