AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten in Access reinschreiben...
Thema durchsuchen
Ansicht
Themen-Optionen

Daten in Access reinschreiben...

Ein Thema von Mauli · begonnen am 31. Mai 2004 · letzter Beitrag vom 31. Mai 2004
Antwort Antwort
Benutzerbild von Mauli
Mauli

Registriert seit: 7. Apr 2003
Ort: Wuppertal
160 Beiträge
 
Delphi 2005 Enterprise
 
#1

Daten in Access reinschreiben...

  Alt 31. Mai 2004, 14:44
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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Daten in Access reinschreiben...

  Alt 31. Mai 2004, 15:24
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.
  Mit Zitat antworten Zitat
Benutzerbild von Mauli
Mauli

Registriert seit: 7. Apr 2003
Ort: Wuppertal
160 Beiträge
 
Delphi 2005 Enterprise
 
#3

Re: Daten in Access reinschreiben...

  Alt 31. Mai 2004, 15:33


Ach du meine Güte...



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 = 'LFSPAND 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 = 'ECHTAND GS_BETRAG_EURO > 0) OR
       (GS_GELDBUCHUNGSTYP = 'STBUAND 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?

Gibt es vielleicht eine einfache Möglichkeit von Paradox nach Access zu schaufen???
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Daten in Access reinschreiben...

  Alt 31. Mai 2004, 15:39
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.
  Mit Zitat antworten Zitat
HaJo

Registriert seit: 28. Apr 2004
Ort: Würselen
140 Beiträge
 
Delphi 8 Enterprise
 
#5

Re: Daten in Access reinschreiben...

  Alt 31. Mai 2004, 17:08
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
Hans-Joachim Brosius
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:59 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