PDA

Ver la Versión Completa : insertar en base de datos


pmtzg
23-09-2011, 01:53:07
hola amigos
preguntando a los expertos nuevamente !!!

usando un DataModule Llamado DMClientes con FibDataset
y otro Datamodule Llamado AccesoDatos donde esta FibData (Bd)

al grabar en una base de datos lo hago de la siguiente manera:


DMClientes.DTSMovClientes.Append;
DMClientes.DTSMovClientes.QInsert.Params[0].Value:= enumero.Text;
DMClientes.DTSMovClientes.QInsert.Params[1].Value:= 'A';
DMClientes.DTSMovClientes.QInsert.Params[2].Value:= enombre.Text;
DMClientes.DTSMovClientes.QInsert.Params[3].Value:= erfc.Text;
DMClientes.DTSMovClientes.QInsert.Params[4].Value:= edir.Text;
DMClientes.DTSMovClientes.QInsert.Params[5].Value:= epob.Text;
DMClientes.DTSMovClientes.QInsert.Params[6].Value:= ecp.Text;
DMClientes.DTSMovClientes.QInsert.Params[7].Value:= etel.Text;
DMClientes.DTSMovClientes.QInsert.Params[8].Value:= eatencion.Text;
DMClientes.DTSMovClientes.QInsert.Params[9].Value:= eaten_cobranza.Text;
DMClientes.DTSMovClientes.QInsert.Params[10].Value:= eclasific.Text;
DMClientes.DTSMovClientes.QInsert.Params[11].Value:= edias_cred.Text;
DMClientes.DTSMovClientes.QInsert.Params[12].Value:= mem_obser.Text;
DMClientes.DTSMovClientes.QInsert.Params[13].Value:= ecol.Text;
DMClientes.DTSMovClientes.QInsert.Params[14].Value:= efax.Text;
DMClientes.DTSMovClientes.QInsert.Params[15].Value:= email.Text;
DMClientes.DTSMovClientes.QInsert.Params[16].Value:= ecurp.Text;
DMClientes.DTSMovClientes.QInsert.Params[17].Value:= eclv_ciec.Text;
DMClientes.DTSMovClientes.QInsert.Params[18].Value:= eclv_idse.Text;
DMClientes.DTSMovClientes.QInsert.Params[19].Value:= eclv_rec.Text;
DMClientes.DTSMovClientes.QInsert.ExecQuery;
AccesoDatos.FibTr.Commit;


obiamente ya en el FIBDataset ya tengo los parametros de insert

ahora estoy pensando hacerlo con un PROCEDIMIENTO ALMACENADO
pero no lo he hecho !!
Como sería ? ... me iluminarian como hacerlo ? ? ?? ? ? ?

y que sera mas rapido ?, si lo hago masivo; por decir cada 1000 registros
grabar !!!

sera mas rapido FIBDataset o el Procedimiento Almacenado ????

espero sus comentarios y su apoyo
mil gracias por su tiempo

Casimiro Notevi
23-09-2011, 10:41:40
Sería necesario que explicaras el "contexto" de lo que quieres hacer, ahí haces un insert y su correspondiente commit, pero hablas de hacerlo masivo y cada 1000 registros... pero el qué.
Pues eso, que expliques claramente todo lo que quieres hacer, para poder aconsejar correctamente :)

pmtzg
23-09-2011, 17:17:40
gracias casimiro
olvidemos el insert masivo es un proyecto a futuro y me adelante ...

por otra parte la forma como inserto registros a mi base de datos Fb es con FIBDataset y me funciona muy bien; bien, ahora me gustaria hacerlo
con PROCEDIMIENTO ALMACENADO

tú me podrias ayudar como seria o como lo haria con mi ejemplo de arriaba ??
y que componentes usar !!

te agradezco mucho tus comentarios .. un saludo !!

defcon1_es
23-09-2011, 17:59:20
Seguro que los FiB tienen un componente específico para ejecutar procedimientos almacenados (similar al TIBStoredProc), con lo que
creas el procedimiento SQL en tu base de datos y usas ese componente.


CREATE OR ALTER PROCEDURE PRINSERTARMOVCLIENTES(PARNUMERO INTEGER, ....)
AS
BEGIN
-- El cuerpo del procedimiento debe ser la sentencia SQL que tienes en tu query
END


La llamada en Delphi es básicamente igual a la que tienes:

DMClientes.spInseratMovClientes.Params[0].Value:= enumero.Text;
DMClientes.spInseratMovClientes.Params[1].Value:= 'A';
...
AccesoDatos.FibTr.Commit;