![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
![]() Se que la solución es simple, tanto que no la encuentro.
Tengo una aplicación que guarda 2 bases de datos paradox con información del usuario, (El sistema permite realizar consultas de información en textos y permite al usuario poner marcadores a los diferentes temas encontrados). Inicialmente solo se podía exportar la tabla del usuario a excel, pero a sujerencia (y solicitud de varios usuarios) tengo que incorporar la capacidad de exportar e importar las tablas (para ser intercambiadas por los usuarios). La exportacion no tiene problemas (aunque me enrede tratando de exportar los datos en formato XLS (Pido mis disculpas a roman por ponerlo a trabajar en un hilo anterior) ) para exportar simplemente copio los archivos al Disco\directiorio de destino. La importación no es tan simple, ya que tengo que evitar que se repitan los datos ya existentes. Y la cosa se complica más cuando debo importar desde diferentes bases de datos ( estructura origen = estructura destino) por lo que la verificación o búsqueda que realize debe ser creada en tiempo de ejecución. Esto es más o menos lo que quiero hacer Código:
// El alias, tablename y demás propiedades de las tablas estan OK // t := Tabla exportada // a := Tabla que recibe los datos While not t.Eof do Begin Existe := False; Filtro := ''; // Crear un filtro para el registro for i := 0 To t.Fields.Count-1 do If t.Fields.Fields[i].DataType in [ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftDate, ftTime, ftDateTime] Then If t.Fields.Fields[i].DataType = ftString Then filtro := Filtro + t.Fields.Fields[i].FieldName+' = "'+t.Fields.Fields[i].AsString+'" And ' Else filtro := Filtro + t.Fields.Fields[i].FieldName+' = '+t.Fields.Fields[i].AsString+' And '; // Quitar el ultimo ' and ' Delete(Filtro,Length(Filtro)-4,5); a.Filter := Filtro; // Me genera un error de filtro a.First; Existe := a.RecordCount > 0; // si no hay no existe If Not(existe) Then // si no existe lo creo Begin a.Insert; for i := 0 To a.Fields.Count-1 do If a.Fields.Fields[i].DataType <> ftAutoInc Then a.Fields.Fields[i].Value := t.Fields.Fields[i].Value; a.Post; End; t.Next; End; t.close; a.close; El Filtro que me genera es: Código:
'Partida = "2106.90.90.90" And Descripcion = "---Los demas" And Gravamen = "20" And RegimenLegal = "no" And Observaciones = "B.system fat burner (CIP=393)"' Probe la instrucción SQL en dbExplorer: Código:
Select *from arancel where Partida = "2106.90.90.90" And Descripcion = "---Los demas" And Gravamen = "20" And RegimenLegal = "no" And Observaciones = "B.system fat burner (CIP=393)" Nota: No he querido usar la sentencia SQL porque toda la aplicación está basada en TTable (no he usado TQuery) y ma parece que de hacerlo aumentaría bastante el tamaño de la aplicación, por eso las complicaciones ¿insecesarias? de hacerlo con un filtro y una tabla
__________________
Sitrico Última edición por sitrico fecha: 21-01-2004 a las 21:39:43. |
|
|
![]() |
|