PDA

Ver la Versión Completa : Insertar Campos de dos tablas pk, fk


David Adan
09-12-2011, 05:24:37
Buenas..............!!!a todos los del Club delphi quisiera por favor si alguien pudiera ayudarme tengo un problema con la insersion de unos campos, quiero insertar campos a la tabla persona mediante la tabla "cliente_empre" utilizando el siguiente codigo quisiera saber como hago.......?¿¿?

Adoquery1.Sql.Clear;
Adoquery1.Sql.Add('Insert into persona(nit, fax) values (');
Adoquery1.Sql.Add(QuotedStr(Edit1.Text) +','+ QuotedStr(Edit2.Text)+')');
Adoquery1.ExecSql;

óóó utilisando............................

Adoquery.InsertRecord([nit, fax]);


Las tablas son...
/////////////////////////////////////////////////////////////////////////////
CREATE TABLE `cliente_empre` (
`codcliente_empre` int(11) NOT NULL auto_increment,
`nit` char(25) default NULL,
`fax` char(25) default NULL,
`codpersona` int(11) NOT NULL,
PRIMARY KEY (`codcliente_empre`),
KEY `codpersona` (`codpersona`)
) ENGINE=MyISAM AUTO_INCREMENT=80015 DEFAULT CHARSET=ascii;
/////////////////////////////////////////////////////////////////////////////////

CREATE TABLE `persona` (
`codpersona` int(11) NOT NULL auto_increment,
`nombre` char(25) default NULL,
`app` char(25) default NULL,
`apm` char(25) default NULL,
`ci` varchar(30) default NULL,
PRIMARY KEY (`codpersona`)
) ENGINE=MyISAM AUTO_INCREMENT=200004 DEFAULT CHARSET=ascii;
/////////////////////////////////////////////////////////////////////////////////
o si pudieran facilitarme otra guia les quedare muy agradecido de ante mano...............!!!

ecfisa
09-12-2011, 06:03:26
Hola David y bienvenido a Club Delphi :)

Como es costumbre con los recién llegados, te invito a que leas nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php).

Siempre es aconsejable utilizar parámetros para enviar valores a una sentencia SQL, para evitar la Inyección SQL (http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL).


with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('INSERT INTO PERSONA(NIT, FAX)');
SQL.Add('VALUES(:NIT, :FAX)');
Parameters.ParamByName('NIT').Value:= Edit1.Text;
Parameters.ParamByName('FAX').Value:= Edit2.Text;
ExecSQL;
end;


Un saludo.

David Adan
09-12-2011, 07:19:38
gracias por la pronta respuesta................!!!
pero mi pregunta era de si yo puedo meter datos
a los campos de la otra tabla por decir
tengo un

from de Cliente_empre

tengo campos nit, fax,(nombre, app, apm, ci) y mediante fk codpersona
si puedo tambien introducir o incertar datos al los campos de la tabla persona
en los campos nombre,app,apm,ci como puedo hacer este procedimiento si esque hay
alguna forma......?¿?¿
Close;
SQL.Clear;
SQL.Add('INSERT INTO PERSONA(NIT, FAX)');
SQL.Add('VALUES(:NIT, :FAX)');
Parameters.ParamByName('NIT').Value:= Edit1.Text;
Parameters.ParamByName('FAX').Value:= Edit2.Text;
ExecSQL;

a este codigo añadir los campos de la otra tabla que serian

nombre,
app,
apm,
ci.

y el nombre de la tabla si fuese necesario por favor de antemano muchas grasias..............!!!

ecfisa
09-12-2011, 07:49:03
Hola David.

Lo siento, no logro entenderte bién. Si lo que buscas es agregarle uno o más campos a la tabla persona mediante la declaración INSERT INTO ... la respuesta es no.

Es decir si en la creación de la tabla no tenes declarados en la tabla persona los campos NIT y FAX no los podés agregar de ese modo. Sí podrías hacerlo, por ejemplo, mediante una sentencia del tipo:

ALTER TABLE PERSONA ADD NIT CHAR(25)...

Pero como te dije antes no logro captar la idea de lo que deseas hacer...

Saludos.

David Adan
09-12-2011, 14:57:52
si hago esta pregunta es porque lo hice con manejo de interfas como yo lo digo utilizando


ADOQUERY, DBNavigator, DataSource
DataSource=DataSet=(AdoQuery)
DBNavigator=DataSourse=(DataSourse1)
ADOQUERY=Connetion(ponemos la base de datos a conectar)=SQL(ponemos la consulta)

Con los datos mencionados anteriormente insertaba a las dos tablas(cliente_empre, persona)
Ahora mediante código a lo que me respondió pero con la tabla client_pempre añadir los siguientes campos o como puedo hacer
Close;
SQL.Clear;
SQL.Add('INSERT INTO CLIENTE_EMPRE INTO PERSONA (nit, fax, nombre, app,apm,ci)');
SQL.Add('VALUES(:NIT, :nit, :nombre, :app, :pam, :ci )');
Parameters.ParamByName('nit').Value:= Edit1.Text;
Parameters.ParamByName('fax').Value:= Edit2.Text;
Parameters.ParamByName('nombre').Value:= Edit3.Text;
Parameters.ParamByName('app').Value:= Edit4.Text;
Parameters.ParamByName('apm').Value:= Edit5.Text;
Parameters.ParamByName('ci').Value:= Edit6.Text;
ExecSQL;

El problema que estos campos son de dos tablas y quiero insertarlos, las dos líneas de insert y values ahí se encuentra el problema sale error de sintaxis.
Como les decía anteriormente tengo un formulario donde saco los campos de client_empre y también saco los campos de persona y quiero insertar nuevos datos o datos nuevos a estos registros como hago grasias de antemano

oscarac
09-12-2011, 15:05:28
Los inserts son por cada tabla
no puedes hacer un insert unico para insertar datos en 2 tablas

lo que tendria que hace es 2 insert.. uno para cada uno