Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Daten in Access reinschreiben... (https://www.delphipraxis.net/23247-daten-access-reinschreiben.html)

Mauli 31. Mai 2004 14:44


Daten in Access reinschreiben...
 
Ich habe das bisher noch nicht gemacht, ich würde aber gerne ;-)


Und zwar ziehe ich mir eine Menge Daten von einem DB2 Server und möchte diese dann in eine Access Datenbank schieben.

Bei unseren alten BDE Anwendungen ging das noch klasse mit dem BatchMove (BatCopy).

Ich hatte es jetzt mal mit den ADO Komponenten von Delphi 7 versucht. Da finde ich allerdings nicht solch eine Möglichkeit.

Das sollte doch eingentlich funzen, oder???

Vielleicht hat jemand ja die Lösung.

Egal, ob Delphi 5, Delphi7 oder gar Delphi 8.

Ich wäre um Beispiele sehr froh ;-)

Danke

Bernhard Geyer 31. Mai 2004 15:24

Re: Daten in Access reinschreiben...
 
Dazu wirst Du vermutlich ein kleines Programm schreiben müssen, das es zwar von M$ Programm gibt um aus einer anderen Datenbank die Daten in die eigen DB zu bringen, aber diese eigentlich als Ziel-DB nur den MS-SQl-Server haben.

Vom Prinzip geht es folgendermaßen:
Delphi-Quellcode:
  DB2Query.SQL := 'SELECT * FROM Ursprungstabelle';
  DB2Query.Open;
   
  sql1 := 'INSERT INTO Zieltabelle('
  for i := 1 to ZielQuery.Fields.Count do
  begin
    if i > 1 then
      sql1 := sql1 + ',';
    sql1 := sql1 + ZielQuery.Fields[i].FieldName;
  end;

  sql1 := sql1 + ') VALUES('

  while not DB2Query.EOF do
  begin
    ZielQuery.SQL := sql1

    for i := 1 to ZielQuery.Fields.Count do
    begin
      if i > 1 then
        ZielQuery.SQL := ZielQuery.SQL + ',';
      ZielQuery.SQL := ZielQuery.SQL + '''' + ZielQuery.Fields[i].Value '''';
    end;

    ZielQuery.SQL := ZielQuery.SQL + ')';
    ZielQuery.ExecSQL;
  end;
Vermutlich mußt Du noch einige Anpassungen vornehmen um z.B. mit BLOB-Feldern arbeiten zu können.

Mauli 31. Mai 2004 15:33

Re: Daten in Access reinschreiben...
 
:shock: :shock: :shock:

Ach du meine Güte...

:shock: :shock: :shock:

Meine SQL sieht ca so aus:

SQL-Code:
SELECT KOND_LFSP, INLAND_AUSLAND, STORNO, KONTO, COUNT(*) AS ANZAHL
     , SUM(BETRAG_INCL_UST), SUM(UST), SUM(BETRAG_INCL_UST + UST)
FROM (                                                             
SELECT                                                            
       CASE WHEN GS_KONTONUMMER = 9648309907                       
             AND GS_SERVICEFUNKTION = 'LFSP' THEN 'XTRA FEE'    
            WHEN GS_KONTONUMMER = 9648409904                       
             AND GS_SERVICEFUNKTION = 'LFSP' THEN 'SNO GEB'      
            WHEN GS_AUSLOESER  = 'UMTA'                          
                                              THEN ' UMTAUSCH'    
            ELSE                      GS_KONDITION_KUERZ        
       END AS KOND_LFSP                                          
     , CASE WHEN GS_KONTONUMMER = 9648309907                       
             AND GS_SERVICEFUNKTION = 'LFSP'                      
              THEN GS_BETRAG_EURO / 100 * 116                     
            WHEN GS_KONTONUMMER = 9648409904                       
             AND GS_SERVICEFUNKTION = 'LFSP'                      
              THEN GS_BETRAG_EURO                                
            ELSE  GS_BETRAG_EURO * -1                             
       END AS BETRAG_INCL_UST                                    
     , GS_KONTONUMMER AS KONTO                                    
     , CASE WHEN (GS_KONTONUMMER = 9648309907                     
                  AND GS_SERVICEFUNKTION = 'LFSP')                
            THEN           GS_BETRAG_EURO / 100 * 16             
            WHEN (GS_KONTONUMMER = 9648409904                     
                  AND GS_SERVICEFUNKTION = 'LFSP')
THEN           GS_BETRAG_EURO / 116 * 16     
         WHEN GS_KONDITION_KUERZ = 'CLEARGEB'          
           OR GS_KONDITION_KUERZ = 'CLEARGS'          
           OR GS_KONDITION_KUERZ = 'CLEARNAM'          
           OR GS_KONDITION_KUERZ = 'CCPFEE'            
         THEN           GS_BETRAG_EURO / 116 * 16 * -1 
         ELSE           0                             
    END AS UST                                        
  , CASE WHEN   GS_KONDITION_KUERZ = 'CLEARGEB'      
           OR   GS_KONDITION_KUERZ = 'CLEARGS'      
           OR   GS_KONDITION_KUERZ = 'CLEARZV'      
           OR   GS_KONDITION_KUERZ = 'LOCO'          
          THEN           '     '                    
         WHEN GS_KONTONUMMER = 9648309907               
          AND GS_SERVICEFUNKTION = 'LFSP'              
          THEN           '     '                    
         WHEN GS_KONTONUMMER = 9648409904               
          AND GS_SERVICEFUNKTION = 'LFSP'              
          THEN           '     '                    
         WHEN GS_AUSLOESER  = 'UMTA'                  
          AND SUBSTR(GS_FI_BENUTZERSCHL,1,2) = 'DE'    
          THEN           'INLAND'                    
         WHEN GS_AUSLOESER  = 'UMTA'                  
          AND SUBSTR(GS_FI_BENUTZERSCHL,1,2) ^= 'DE'  
          THEN           'AUSLAND'
ELSE            '      '                                    
       END AS INLAND_AUSLAND                                              
     , CASE WHEN GS_GELDBUCHUNGSTYP    = 'STBU'                          
             THEN ' STORNO'                                                
            ELSE ' '                                                      
       END AS STORNO                                                      
FROM PD02.XGKKD01T                                                        
WHERE ((    GS_AUSLOESER = 'HAND'                                          
       AND GS_GABRV_FI_GRUPPE ^= 'FOND'                                    
       AND ((GS_SERVICEFUNKTION = 'LFSP' AND GS_KONTONUMMER IN (9648309907,
                                                                9648409904))
             OR (GS_SERVICEFUNKTION ^= 'LFSP')                            
                 AND GS_KONDITION_KUERZ IN ('LOCO','CLEARGEB','CCPFEE',    
                                  'CLEARGS','CLEARNAM','CLEARZV')) )      
   OR (    GS_AUSLOESER = 'UMTA')           )                            
--  AND GS_DEPOTNUMMER = 7961515003                                       
  AND GS_DEPOTNUMMER BETWEEN 7961515000 AND 7961515999                     
  AND (   (MONTH(GS_ABRECH_DATUM) = MONTH(CURRENT TIMESTAMP) - 1)          
       OR (MONTH(CURRENT TIMESTAMP) = 1 AND                                
           MONTH(GS_ABRECH_DATUM) = 12)        )                          
  AND GS_ABRECH_DATUM > '12.06.2003'                                      
  AND ((GS_GELDBUCHUNGSTYP = 'ECHT' AND GS_BETRAG_EURO > 0) OR            
       (GS_GELDBUCHUNGSTYP = 'STBU' AND GS_BETRAG_EURO < 0) OR            
       (GS_SERVICEFUNKTION = 'LFSP')                       OR            
       (GS_AUSLOESER = 'UMTA')           )
) AS TAB1                                         
 GROUP BY KOND_LFSP, INLAND_AUSLAND, STORNO, KONTO
Wo ist denn da der Vortschritt von Paradoxtabellen auf eine Access Datenbank? :gruebel:

Gibt es vielleicht eine einfache Möglichkeit von Paradox nach Access zu schaufen???

Bernhard Geyer 31. Mai 2004 15:39

Re: Daten in Access reinschreiben...
 
Wieso denn überhaupt Access?

Ich sehe nur den Fortschritt das man nicht mehr die veraltete BDE benötigt (wenn Du auch deinen DB2-Zugriff auf eine native-Schnittstelle umgestellt hast). Und weil man in Access weitere Auswertungen fahren kann ohne Programmieren zu müssen.

Du kannst Paradox-Tabllen direkt in Access importieren.

HaJo 31. Mai 2004 17:08

Re: Daten in Access reinschreiben...
 
Was Bernhard sagte, kann ich beides nur bestätigen, warum Access und wenn schon - dann mit dem Delphi-Zubehör-Prg. Datapump.

Meiner Meinung nach ist aber die Umstellung auf Access nicht unbedingt eine Verbesserung :-)

Gruß, Jochen


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz