PDA

Ver la Versión Completa : consulta en sus propiedades de Tquery


jorgito
20-01-2006, 22:44:47
Holas estoy realizando consultas con Tquery en sus propiedades SQL, en delphi. al realizar consultas de select me sale bien, pero al insertar datos a mi base de datos me sale error.


select *from amacen.db where codigo=:cod_cli



insert into almacen.db values (:codigo,:nombre,:direccion,:telefono)


esta mal algo insert y como se realiza el update y delete. una ayuda porfavor.

dec
20-01-2006, 23:13:35
Hola,

No tengo mucha experiencia, pero, creo que tienes que hacer algo así:


INSERT INTO almacen.db (campo1, campo2, campo3, campo4)
VALUES (:codigo,:nombre,:direccion,:telefono)


En el apartado Manuales (http://www.clubdelphi.com/manuales/) del ClubDelphi encontrarás uno sobre SQL que puede venirte bien. ;)

jmariano
20-01-2006, 23:25:33
También estaría bien que dijeras que mensaje de error te está dando o que pusieras algo del código donde estás ejecutando la consulta, porque la sentencia en sí la tienes correcta.

De todas formas, fíjate si estás creando los parámetros que le estás pasando al objeto TQuery, propiedad "Params", y si estás asignando valores correctos a estos parámetros antes de ejecutar la consulta.

Saludos!

roman
20-01-2006, 23:34:04
porque la sentencia en sí la tienes correcta

Sólo si la tabla tiene cuatro columnas y los valores se dan en el mismo orden, de lo contrario tendrá que especificar las columnas tal como indica dec

Quizá el error provenga de como ejecuta la consulta. En lugar de Open o Active := true, debe usar ExecSQL.

// Saludos

jorgito
21-01-2006, 00:53:25
me sigue saliendo el error
error
query2:field 'codigo' 'nombre' ' direccion' 'telefono' is of an unknown type
este es mi codigo para invocar al query
query2.Open;
query2.ParamByName('codigo').asstring:=edit1.Text;
query2.ParamByName('nombre').asstring:=edit1.Text;
query2.ParamByName('direccion').asstring:=edit1.Text;
query2.ParamByName('telefono').asstring:=edit1.Text;
query2.ExecSQL;

y si me sale los params del query2

jmariano
21-01-2006, 13:01:46
Edita la propiedad "Params" del TQuery e indica el tipo de datos de los parámetros, propiedad "DataType", ya que por defecto esta propiedad toma el valor "ftUnknown" (es decir, tipo "desconocido").

Saludos!

vtdeleon
21-01-2006, 15:46:10
Saludosya que por defecto esta propiedad toma el valor "ftUnknown" (es decir, tipo "desconocido").Por lo regular esa propiedad cambia cuando se especifica el parametro con AsDate, AsString, AsInteger.

RyCk
21-01-2006, 20:41:59
Query.Connection.Connected := TRUE;
Query.SQL.Text := 'INSERT INTO tabla (campo, campo2) values(:campo1, :campo2)';
Query.ParamByName('campo').AsString := Edit1.Text;
Query.ParamByName('campo2').AsString := Edit2.Text;
Query.ExecSQL;

cuburu
31-01-2006, 02:43:17
Hola,

Quizas lo que podrías hacer es armar el query desde 0, creandolo tu mismo a tus necesidades.

Necesitas ordenar los campos que deseas ingresar, para eso te sirve lo que se encuentra despues de tutabla encerrado entro parentesis, y después en values va la información de los campos.


var
Cons: TQuery;
begin
Cons := TQuery.Create(nil);
try
with Cons do
begin
Close;
SQL.Clear;
SQL.Add('INSERT INTO tutabla(campo1, campo2, ..., campon) VALUES(:Campo1, :Campo2, ..., :Campon)');
ParamByName('Campo1').asString := Edti1.Text;
ParamByName('Campo2').asString := Edti1.Text;
...
ParamByName('Campon').asString := Edti1.Text;
Prepare;
Open;
end;
finally
Cons.Free.
end;
end;


el finally lo que hace es que no importa lo que pase, se finalice bien, mal, o lo que sea.... siempre se ejecuta y en este caso elimina el objeto creado de la BD.

Suerte.

Jonnathan
31-01-2006, 15:57:35
Buen dia. Con las sugerencias para el paso de parámetros ya no deberías tener problemas. Aqui esta lo demás que pediste:

Suponiendo que tus campos son Codigo, Nombre, Direccion, Telefono y que el campo clave de la tabla es Codigo:

Para hacer un Update

Update almacen.db
Set
Codigo=:Codigo,
Nombre=:Codigo,
Direccion=:Codigo,
Telefono=:Codigo
where
Codigo=:OLD_Codigo

Donde OLD_Codigo es el el valor de "Codigo" del registro que vas a modificar.

Para hacer un Delete

Delete from almacen.db
where
Codigo=:OLD_Codigo

Donde OLD_Codigo es el el valor de "Codigo" del registro que vas a borrar. Saludos :).