Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-11-2023
Eduard23 Eduard23 is offline
Miembro
 
Registrado: mar 2023
Posts: 32
Poder: 0
Eduard23 Va por buen camino
FDMemTable

Buenas amigos necesito de su valiosa ayuda. tengo una aplicacion en delphi y uso MySQL como base de datos.
Necesito Hacer un insert into desde un FDMemtable, aclaro que ya el FDMemTable esta lleno con un query previo solo necesito agregar todos los registros contenidos en el FDMemTable1.

Código SQL [-]
Insert into Table1 Select * from FDMemtable1

Algo asi es mi codigo
Código Delphi [-]
Var  cDatabase2,cDataBase3 : String;

    cDataBase2:='Table1'
    cDataBase3:='FDMemTable1';
    Query1.SQL.Clear;
    Query1.SQL.Add('Insert Into '+cDataBase2+' Select * From '+cDcDatabase3);
    Query1.ExecSQL;
si lo hago asi arroja este error -->Incompatible types: 'string' and 'TFDMemTable'

Otra Manera de Declarar las Varia les
Declaro cDataBase3 : TFDMemtable;

Código Delphi [-]
    cDataBase2:='Table1'
    cDataBase3:=FDMemTable1;
    Query1.SQL.Clear;
    Query1.SQL.Add('Insert Into '+cDataBase2+' Select * From '+cDcDatabase3);
    Query1.ExecSQL;
Arroje el siguiente error --> No Existe la Tabla FDMemtable1

Muchas Gracias de Antemano....

Última edición por Casimiro Notevi fecha: 17-11-2023 a las 11:22:48. Razón: Poner etiquetas [delphi] [/delphi] al código.
Responder Con Cita
  #2  
Antiguo 17-11-2023
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.757
Poder: 21
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Creo que estás tratando de utilizar cosas de delphi en MySQL.

En Delphi tienes la tabla en memoria.
En MySQL tienes una tabla (manejada por el serividor MySQL).

Por lo tanto debes recorrer la tabla Delphi diciéndole a MySQL que los ponga en una tabla (Haciendo SQL para insertar (INSERT INTO TABLA ([CAMPOS]) VALUES ([VALORES])).

Algó así, pero tendrás que revisar tipos de datos, SQL, meter el ExecSQL en un bloque try..except por si falla, etc.

Código Delphi [-]
// Me posiciono en el primer registro
FDMemTable1.First;

// Recorro el dataset
while not FDMemTable1.EOF do
begin
    // Inserto datos en MySQL
    Query1.SQL.Clear;
    Query1.SQL.Add('Insert Into Tabla (Camppo1, Campo2, Campo3, ...) Values (:Valor1, :Valor2, :Valor3, ...)');
    Query1.Params.ByName('Valor1').AsString := FDMemTable1.FieldByName('Campo1').AsString;
    Query1.Params.ByName('Valor2').AsInteger := FDMemTable1.FieldByName('Campo2').AsInteger;
    Query1.Params.ByName('Valor3').AsDateTime := FDMemTable1.FieldByName('Campo3').AsDateTime;
    ...
    Query1.ExecSQL;

    // Siguiente registro
    FDMemTable1.Next;
end

Además de esto, por los nombres de variables que utilizas creo que estás liando un poco los conceptos.

Base de Datos: Es la entidad que contiene tablas. Manejada por el servidor de base de datos (MySQL).
Tabla: Cada una de las estructuras que contienen registros con una estructura definida.
Registro: Cada "línea" de una tabla.
Campo: Cada "celda" de un registro.

Última edición por duilioisola fecha: 17-11-2023 a las 11:41:42.
Responder Con Cita
  #3  
Antiguo 17-11-2023
Eduard23 Eduard23 is offline
Miembro
 
Registrado: mar 2023
Posts: 32
Poder: 0
Eduard23 Va por buen camino
muchas Gracias duilioisola por tu respuesta voy a probarla
Saludos
Responder Con Cita
  #4  
Antiguo 17-11-2023
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.549
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Eduard23 Ver Mensaje
Algo asi es mi codigo


Código Delphi [-]
Var 
cDatabase2,cDataBase3 : String; 
...

  cDataBase2:='Table1' 
  cDataBase3:='FDMemTable1'; 
  Query1.SQL.Clear; 
  Query1.SQL.Add('Insert Into '+cDataBase2+' Select * From '+cDcDatabase3); 
  Query1.ExecSQL;
si lo hago asi arroja este error -->Incompatible types: 'string' and 'TFDMemTable'

La variable (string) que estás utilizando en la Query1 no es la misma que has definido arriba.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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


La franja horaria es GMT +2. Ahora son las 01:29: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