Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Como puedo insertar varios registros con una instruccion de SQL (https://www.clubdelphi.com/foros/showthread.php?t=39558)

marcoev 24-01-2007 01:37:47

Como puedo insertar varios registros con una instruccion de SQL
 
Existe alguna instruccion para que pueda ingresar varios registros a una tabla de MySQL?

Lo que pretendo es que desde una forma de delphi, el usuario diga voy a ingresar folios desde el 1 al 1000, estos folios se anteceden con una letra, quedarian algo asi como X0001, X0002,... etc.

lo mas simple seria hacerlo con un loop y estarlos ingresando directamente al componente de tQuery, pero no es lo que me gustaria hacer.

Alguna sugerencia?

AzidRain 24-01-2007 01:55:38

Me parece que no tienes de otra mas que hacer un loop y poner adentro un INSERT ...realmente lo hace muy rápido asi que no creo que haya mucho problema.

roman 24-01-2007 05:47:48

MySql acepta inserción de múltiples registros en una sóla consulta:

Código SQL [-]
insert into personas
(id, nombre)
values
  (1, 'pedro'),
  (2, 'juan'),
  (3, 'maría')

// Saludos

marcoev 24-01-2007 18:48:44

muchas gracias Roman, voy a probar tu sugerencia.

AzidRain 24-01-2007 18:52:50

De todas formas no te salvas del loop para construir la sentencia antes de ejecutarla. En este caso hay que crear los valores "X0001", "X0002", etc. y meterlos directamente en la setencia.

marcoev 24-01-2007 22:23:53

si, de eso ya me di cuenta, del loop no me salvo.

pero una cosa, normalmente para no tener problemas con los tipos de datos, utilizo los parametros, mas que nada, con las fechas y campos blob, alguien me podria decir como validaria los campos tipo fecha en la sentencia de SQL?

roman 24-01-2007 22:47:14

Yo no entiendo a qué te refieres con validar los campos dentro de la sentencia, pero tampoco parece tener que ver mucho con el tema del hilo. ¿Por qué no abres uno nuevo?

// Saludos

AzidRain 24-01-2007 22:54:00

Citando el código de Roman pero usando paramtros:


Código SQL [-]
insert into personas
(id, nombre)
values
  (:id, :nombre')

Código Delphi [-]
Uses DateUtils;
Procedure PruebaSQL;
var  UnQuery:TZQuery; // Yo uso Zeos pero es lo mismo para otros motores
Begin
  unQuery := TZQuery.Create(nil);
  Try
   With UnQuery Do
   Begin
     Connection := MyConeccion;  // Asumo que ya esta activa la conexion
     SQL.Add('insert into personas');  // Prepara el query     SQL.Add(' (id, unafecha)');
     SQL.Add(' values  (:id, :fecha)');
 
     //Fijar parametros
     for c:=1 to 1000 Do
     Begin
       ParamByName('id').AsString := format('X%d',[c]); //Creamos el folio en formato X1, X2, etc.
       ParamByName('fecha').AsDateTime := Today; //Usamos la fecha actual
                                                                   // Pero puedes usar cualquier
                                                                    // Valor TDate o TDateTime
   
        ExecSQL; //Insertar el registro (el folio cambia con cada iteración)
     end;
    end; 

  Finally
    unQuery.free;
  end;
end;
Como puedes ver al poner el parametro fecha usando AsDateTime Delphi se encarga de convertir el dato en un valor de fecha adecuado para el motor de base de datos. Obviamente antes de fijarlo nos tenemos que asegurar que le estemos pasando una fecha válida. Si usas un control o edit para obtener la fecha, pues usamos TDateTimePicker que solito nos devuelve siempre una fecha.


La franja horaria es GMT +2. Ahora son las 21:47:00.

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