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)
-   -   Insert con mydac (https://www.clubdelphi.com/foros/showthread.php?t=38158)

emeritos 05-12-2006 13:27:24

Insert con mydac
 
1.- Estoy utilizando el objeto MyQuery y he visto que exite una propiedad llamada SQLInsert, y que ha generado automaticamente una insercion:

INSERT INTO num_perdido
(codigo_mp, numero_perdido)
VALUES
(:codigo_mp, :numero_perdido)

Pues bien, que se pondria en el VALUES si el codigo_mp o el otro campo, fuese o viniese de otra tabla (ejemplo MyQuerycodigos['codigo_mp']) o biniese de un EDIT o de un DBEdit (campo enlazado).


2.- Ha por cierto que siginifica en el borrado o en la modificacion

**** =:Old_codigo_mp

no lo veo claro, aunque todo funciona bien.


3.- Por ultimo, para ejecutar una sentencia SQL dentro de un MyQuery hay que poner MyQuerycodigos.Execute.



Gracias por todo..

Bicho 06-12-2006 00:28:56

Hola,

Vamos a ver si yo tambien me aclaro.

Cita:

Empezado por emeritos

1.- Estoy utilizando el objeto MyQuery y he visto que exite una propiedad llamada SQLInsert, y que ha generado automaticamente una insercion:

INSERT INTO num_perdido
(codigo_mp, numero_perdido)
VALUES
(:codigo_mp, :numero_perdido)

Pues bien, que se pondria en el VALUES si el codigo_mp o el otro campo, fuese o viniese de otra tabla (ejemplo MyQuerycodigos['codigo_mp']) o biniese de un EDIT o de un DBEdit (campo enlazado).

A la hora de asignarlos los parámetros lo harías así:
Código Delphi [-]
MyQuery.ParamByName('codigo_mp').AsString := MyQueryCodigos['codigo_mp']; //creo que iria así, si me equivoco que me corrigan.
Cita:

Empezado por emeritos
2.- Ha por cierto que siginifica en el borrado o en la modificacion

**** =:Old_codigo_mp

no lo veo claro, aunque todo funciona bien.

Supongo que te refieres a lo que sigue a los dos puntos, ¿no?
En este caso, los dos puntos delante de un nombre de lo que en teoria debiera ser un valor, indica parámetro, es decir, ese valor se le manda por parámetro a la consulta (al igual que en el insert anterior). Lo que haces es indicarle al SQL que le pasarás un valor por parámetro, y ese parámetro se llama Old_codigo_mp.
Para pasarle ese parámetro, lo harás de la siguiente manera:

Código Delphi [-]
MyQuery.ParamByName('Old_codigo_mp').AsString := //aquí pones el valor que le mandes;
 //He puesto AsString, pero tu le mandas el tipo de dato que esté esperando esa columna en la tabla.

Cita:

Empezado por emeritos
3.- Por ultimo, para ejecutar una sentencia SQL dentro de un MyQuery hay que poner MyQuerycodigos.Execute.

Depende, si la sentencia es de consulta (SELECT), no necesitas el Execute, puede usar el método Open o la propiedad Active := True;
En caso de que la sentencia implique modificación de datos (inserta, delete, update, drop, create, ...) si debes usar el método Execute.

Espero te sirva.

Saludos

emeritos 06-12-2006 09:55:11

He puesto este codigo pero me da un error en las sentencias ParamByName diciendome que no funciona codigo_mp y si le cambio de nombre tambien.


MQnumperdido.ParamByName('codigo_mp').AsInteger := MQentradamp['codigo_mp'];

MQnumperdido.ParamByName('numero_perdido').AsInteger := MQentradamp['n_entrada'];

MQnumperdido.SQLInsert.Clear;
MQnumperdido.SQLInsert.Add('INSERT INTO num_perdido (codigo_mp, numero_perdido) VALUES (:codigo_mp, :numero_perdido)');

MQnumperdido.Execute;


La franja horaria es GMT +2. Ahora son las 03:01:42.

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