Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Insertar Campos de dos tablas pk, fk (https://www.clubdelphi.com/foros/showthread.php?t=76968)

David Adan 09-12-2011 05:24:37

Insertar Campos de dos tablas pk, fk
 
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.

Siempre es aconsejable utilizar parámetros para enviar valores a una sentencia SQL, para evitar la Inyección SQL.

Código Delphi [-]
  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......?¿?¿
Código SQL [-]
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
Código SQL [-]
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:
Código SQL [-]
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

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


La franja horaria es GMT +2. Ahora son las 07:18:01.

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