Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   consulta en sus propiedades de Tquery (https://www.clubdelphi.com/foros/showthread.php?t=29420)

jorgito 20-01-2006 22:44:47

consulta en sus propiedades de Tquery
 
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.

Código SQL [-]
select *from amacen.db where codigo=:cod_cli

Código SQL [-]
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í:

Código SQL [-]
INSERT INTO almacen.db (campo1, campo2, campo3, campo4)
  VALUES (:codigo,:nombre,:direccion,:telefono)

En el apartado 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

Cita:

Empezado por jmariano
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

no se soluciona
 
me sigue saliendo el error
error
Código PHP:

query2:field 'codigo' 'nombre' ' direccion' 'telefono' is of an unknown type 

este es mi codigo para invocar al query
Código PHP:

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

Saludos
Cita:

Empezado por jmariano
ya 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

Código Delphi [-]
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.

Código Delphi [-]
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
Código SQL [-]
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
Código SQL [-]
Delete from almacen.db
where
Codigo=:OLD_Codigo
Donde OLD_Codigo es el el valor de "Codigo" del registro que vas a borrar. Saludos :).


La franja horaria es GMT +2. Ahora son las 01:22:43.

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