Announcement

Collapse
No announcement yet.

Zusammenführen von dbase 4 Datenbanken

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zusammenführen von dbase 4 Datenbanken

    Wer kann mir Helfen?
    Zusammenführen von dbase 4 Datenbanken

    Ich bin auf der Suche nach einem Programm mit dem ich dbase 4 Datenbanken addieren kann. Ich habe eine bestehende dbase 4 Datenbanken, wo ich ständig neue Daten hinzufüge. Leider kommt mindestens einmal im Jahr ein neues Update heraus, welches neue bzw. geänderte Daten enthält. Um mit diesen Daten auch arbeiten zu können, müssen ich diese mit meinen alten Daten zusammenfügen. Dies habe ich jetzt schon zweimal mit Access gemacht. Dies war sehr umständlich, da ich nur nach meinen Datensätzen gesucht habe, und diese in die neue DBA hineinkupiert habe. Der Schwachpunkt an dieser Methode ist, das ich nicht weis ob diese Datensätze schon in der neuen Datenbank enthalten sind. Man müßte in der Lage sein, die beiden Datenbänke zeilenweise vergleichen zu können, um so doppelt vorhandene Datensätze herauszufiltern.
    Ich würde mich über Lösungen bzw. Infos freuen.

    Danke!!!
    Thomas
    [email protected]

  • #2
    <p> <Pre><FONT face=Courier New>
    *** Hier ein Programm zur Lösung deines Problems von einem alten dBaser
    *** Synchronisation 2er dBase-Dateien, Georg Heckmeier
    *** Es gibt 3 Dateien ..\xDatei.dbf alias AKD - Die Ausgangsdatei(Standard-Datei)
    *** ..\Explode\xdatei.dbf alias akpruf - wird zur Prüfdatei
    *** ..\Control\xDatei.dbf alias akorig - das Original (Sicherung, 2.Version usw.)

    weiter =.t.
    do while weiter

    akd= 'xDAtei'
    akorig= 'Control\xDatei' && beliebiges Unterverzeichnis Dateiname ohne '.dbf'
    akpruf= 'Explode\xDatei' && beliebiges Unterverzeichnis Dateiname ohne '.dbf'


    use (akd)
    copy to &akpruf


    use a:\xDatei
    copy to &akorig

    use (akorig)


    ****Hier wird die Zusammenführungsdatei geschaffen akxx3.dbf

    copy stru to akxx3

    close data

    Use akxx3
    appe from (akorig)
    appe from (akpruf)

    *** Der gesamte Inhalt aller Spalten, bzw. der Spalten, die verglichen werden sollen,
    *** wird zu einem Index-ausdruck zusammengefasst. Der Knüller ist das unique! Gibt es
    *** Doppler, so erscheint hiervon nur ein Exemplar!
    *** Überflüssige Einträge: z.B.: die gleiche Anschrift aber 'Str.' statt 'Straße' usw.
    *** oder Schreibfehler und Firmierungsvarianten ('GmbH' statt 'GmbH & Co.KG' z.B.)
    *** können schnell gefunden und mit CTRL + U herausgeworfen werden (das anschließende
    *** PACK nicht vergessen):
    *** selbstverständlich werden auch Zahlen (integers oder floats) verarbeitet: Str(ak)


    index on str(ak) + ltrim(kopf2) + ltrim(kopf1) tag ak unique && hier wird synchronisiert!

    *** allerdings gibt es die Beschränkung des Ausdrucks auf maximal 255 Zeichen
    *** also die Luft raus-trim-men

    wait "In folgender Browse-Darstellung überflüssige Einträge löschen..."

    go top
    brow

    *** hier werden die Unikate (und nur diese) in eine neue Datei kopiert,
    *** das Synchron-Ergebnis liegt in akxx4.dbf

    copy to akxx4
    use akxx4

    **** hier geht es in der Programmroutine weiter...

    ww ="J"
    @ 2,2 say " Weitermachen? " get ww PICT "!" VALID ww $ "NJ"
    read
    if lastkey()#27
    if ww ="J"
    weiter =.t.
    copy to &akd && Zurückschreiben in die Ausgangsdatei
    erase file("c:\db\Data\akxx4.dbf") && usw.
    else
    weiter =.f.
    close data
    exit
    endif
    endif

    enddo

    </p></PRE></FONT&gt

    Comment


    • #3
      Korrektur, weil eine geöffnete Datei lässt sich nicht löschen<br>

      <Pre>
      **** hier geht es in der Programmroutine weiter...

      ww ="J"
      @ 2,2 say " Weitermachen? " get ww PICT "!" VALID ww $ "NJ"
      read
      if lastkey()#27
      if ww ="J"
      weiter =.t.
      copy to &akd && Zurückschreiben in die Ausgangsdatei
      <B>close data</b>
      erase file("c:\db\Data\akxx4.dbf") && usw.
      else
      weiter =.f.
      close data
      exit
      endif
      endif

      enddo

      </PRE&gt

      Comment


      • #4
        Warum es hier <B>while Weiter</B> heißt, ist für die Synchronisation nicht von Bedeutung. <br>Bei gibts diese Schleife, damit unsichere Daten verworfen werden können.

        Das wars

        [email protected]

        Comment

        Working...
        X