Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-08-2010
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
procedimiento insert into.

alguien tiene algun procedimiento para guardar un insert into de cualquiera tabla y cualquier dimension de campos.
ej:
Código Delphi [-]
procedure guardardatos tabla(ptabla, pnrocampos,campo1,campo2...)
begin
insert into ptabla  value(...);
end;
 
 
INSERT INTO <nombre_tabla> 
[(<campo1>[,<campo2>,...])]
values 
(<valor1>,<valor2>,...);
 
]

y si tienen uno para modificar set, mucho mejor
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #2  
Antiguo 30-08-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
que es lo que realmente quieres

que es lo que realmente quieres un ejemplo de como se hace un insert?

algunos lo hacen asi :
Código Delphi [-]
with fmodulo.qry_registra do
   begin
     sql.Add('insert into volantes(usuario,recibe,volante,fecha_oficio)');
     sql.Add('values (:usuario,:recibe,:volante,:fecha_oficio);');
     Parameters.ParamByName('usuario').Value:=Trim(Fprincipal.wusuario);
     Parameters.ParamByName('recibe').Value:=wrecibio;
     Parameters.ParamByName('volante').Value:= woficio;
     Parameters.ParamByName('fecha_oficio').AsDate:= Fregistro.dtp_fecha_oficio.Date;
     try
      ExecSQL;
      application.MessageBox('Registro Almacenado Correctamente','',mb_ok + mb_iconinformation);
      exit;
     except
      on E:EOleException do
        begin
        //showmessage('Problemas con query ['+text+']');
        MessageDlg(Format('Error: %s    Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
        exit;
       end; 
     end;
   end;

sin embargo a mi no me funciona lo que a mi me funciona es:
Código Delphi [-]
with fmodulo.qry_registra do
   begin
     
sql.Add('INSERT INTO VOLANTES (');
   Sql.Add(' usuario,');   
   sql.Add(' recibe,');
   sql.Add(' volante,');
   sql.Add(' fecha_oficio');
   sql.Add(' ) values (');
   sql.Add(' '+QuotedStr(Fprincipal.wusuario)+', ');
   sql.Add(' '+QuotedStr(wrecibio)+', ');
   sql.Add(' '+QuotedStr(woficio)+', ');
   sql.Add(' '+QuotedStr(DateToStr(wfechaoficio))+')');     try
      ExecSQL;
      application.MessageBox('Registro Almacenado Correctamente','',mb_ok + mb_iconinformation);
      exit;
     except
      on E:EOleException do
        begin
        //showmessage('Problemas con query ['+text+']');
        MessageDlg(Format('Error: %s    Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
        exit;
       end; 
     end;
   end;

Última edición por microbiano fecha: 30-08-2010 a las 23:03:07. Razón: por error en no ponerlo en codigo entendible
Responder Con Cita
  #3  
Antiguo 30-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No amigo, lo que quiere es un procedimiento o funcion que sirva para hacer cualquier insert a cualquier tabla y a cualquier cantidad de campos, sin importar nombre o tipo de campo.
Segun entiendo, algo que sirva para todo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #4  
Antiguo 31-08-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Se podía crear un procedimiento que se le pasara el nombre de la tabla, los campos que vamos a dar valores y los valores de los mismos.
Se recorrería todos los campos de la tabla, si se encuentra uno de los campos pasados entonces se le da el valor también pasado, si no existe ese campo entre los pasados entonces se "pasa de él". Se supone que tendrán un valor por defecto.
En fin, es demasiado genérico, habría que tener muy claro para qué tablas, campos y valores se va a hacer y tenerlo controlado.
Lo que no vale es para todos porque si un campo no puede quedar nulo y no le damos valor... saltará el error
Responder Con Cita
  #5  
Antiguo 31-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
De que es factible lo es.
Lo que pasa es que habría que diseñar el procedimiento muy bien y con un conocimiento exacto de las tablas.
Pero si se puede, con paciencia.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #6  
Antiguo 31-08-2010
robacio_ivan robacio_ivan is offline
Miembro
 
Registrado: ago 2010
Ubicación: Rio Cuarto - Cordoba
Posts: 21
Poder: 0
robacio_ivan Va por buen camino
Respuesta

Me parece que hacer un procedimiento de esa categoria no es muy complicado, pero me parece que no tendria sentido porque teniendo el componente IBDataSet los insert, edit o delet se hacen de manera muy sencilla.

De todas formas si queres hacer un procedimiento que sirva para todas las tablas lo que podes hacer es una funcion que le pases en nombre de la tabla y en un arreglo los campos de la misma cosa de que lo unico que tenes que hacer es llenar siempre el arreglo con los campos de la tabla a la cual queres hacer el insert.
Responder Con Cita
  #7  
Antiguo 31-08-2010
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
y si la inserción es muchisimo mas compleja?

Código SQL [-]
INSERT INTO films (code, title) VALUES ('B6717', get_title('B6717'));

INSERT INTO films (code, title, did, date_prod, kind) VALUES
    ('B6717', 'Tampopo', 110, '1985-02-10', 'Comedy'),
    ('HG120', 'The Dinner Game', 140, DEFAULT, 'Comedy');

INSERT INTO films SELECT * FROM tmp_films WHERE date_prod < '2004-05-07';
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
condicionar un procedimiento dentro de otro procedimiento yossi Varios 7 17-05-2010 10:47:14
procedimiento dentro de procedimiento chechu Varios 6 24-11-2005 23:34:48
Insert me cierra otro Insert motrildelphi Conexión con bases de datos 0 05-05-2005 12:20:27
Ayuda, como llamar a un procedimiento desde otro procedimiento? Ariatna Varios 1 01-02-2005 04:05:35
Insert Con Ibx AGAG4 Conexión con bases de datos 8 09-09-2004 20:29:15


La franja horaria es GMT +2. Ahora son las 08:44:09.


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
Copyright 1996-2007 Club Delphi