Probleme mit DbImport()?

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14644
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Probleme mit DbImport()?

Beitrag von Jan »

Hat jemand von Euch schon mal das Phänomen gehabt, das beim DbImport() die Inhalte verschiedener Felder einfach verloren gehen? Hier sind es immer die gleichen drei numerischen und character Felder. Mal werden die Werte übernommen, mal nicht. Auch nicht immer bei allen Datensätzen eines Imports. Normalerweise werden die meisten Daten korrekt übernommen, nur in manchen Sätzen halt nicht. Der Import betrifft normalerweise bis zu ca. 20 Datensätze, also nicht wirklich umfangreich.

Datenbanken sind Clipper mit DBFNTX.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9351
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 360 Mal
Kontaktdaten:

Re: Probleme mit DbImport()?

Beitrag von Tom »

Welche Netztopologie? Windows 7?
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14644
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Probleme mit DbImport()?

Beitrag von Jan »

Moin Tom,

Server ist Windows 2003. Clients Windows 7, fast durchgängig 32 Bit, nur zwei oder drei Rechner mit 64 Bit. Ansonsten gibt es keinerlei Probleme mit den Datenbanken. Auch nicht mit DbImport(). Nur an einer einzigen Stelle. Hier werden wie gesagt bei einem DbImport()-Durchgang in machen Datensätzen die Daten aus drei Feldern manchmal verschluckt.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9351
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 360 Mal
Kontaktdaten:

Re: Probleme mit DbImport()?

Beitrag von Tom »

SMB2-Patch installiert?
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14644
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Probleme mit DbImport()?

Beitrag von Jan »

Nein.

Vielleicht etwas blöde Frage: Muß das sein beim Windows 2003-Server? Der kann doch noch kein SMB2, oder? Und wie gesagt - es gibt gibt neun Stellen, in denen DbImport() genutzt wird. Nirgends mit Problemen, bis auf diese eine. Und auch sonst keine Datenprobleme.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Probleme mit DbImport()?

Beitrag von ramses »

@Jan, ich kenne das Problem, ich habe dann auf DBImport() verzichtet ..... Hast du einmal den Dateiheader auf korrekten Aufbau geprüft?

Gruss

Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14644
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Probleme mit DbImport()?

Beitrag von Jan »

Hallo Carlo,

hast Du mal mit Alaska darüber gesprochen? Konntest Du eingrenzen, unter welchen Bedingungen das passiert? Und wie machst Du jetzt den Import?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Probleme mit DbImport()?

Beitrag von ramses »

@Jan, nein ich habe nicht mit Alaska gesprochen. Ich hatte das Problem an einem WE und musste an diesem WE das Problem lösen und mehrere 100 DBF's einlesen. Ich verwende die Funktion DBImport() grundsätzlich nicht mehr. Ich habe mir eine eigene geschrieben welche Datenfelder die in beiden Datenbanken vorhanden sind einliest und per Codeblöcke gesteuert und zusätzlich Aufgaben erledigen kann. Meist sind ja sowieso noch Feldprüfungen und änderungen nötig. Ausserdem gibt DBImport() keine Erfolgsmeldung zurück, z.b. Anzahl eingelesener Sätze, das macht Sie unberechenbar.

Gruss
Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9351
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 360 Mal
Kontaktdaten:

Re: Probleme mit DbImport()?

Beitrag von Tom »

Ich habe DbImport an den wenigen Stellen, wo ich die Funktion bisher genutzt habe, ebenfalls durch eine eigene Funktion ersetzt, mit FieldGet() und FieldPut() und einem einmaligen Strukturvergleich. Allerdings kann ich mich nicht erinnern, dass DbImport zuvor "Auslassungsprobleme" hatte - ersetzt habe ich es (ebenfalls) nur, um bessere Kontrolle zu haben.
Ausserdem gibt DBImport() keine Erfolgsmeldung zurück, z.b. Anzahl eingelesener Sätze, das macht Sie unberechenbar.
Du hast mit dem Codeblock in der "WhileCondition" (vierter Parameter) eigentlich durchaus die Möglichkeit, erstens die Anzahl der Datensätze mitzuzählen und zweitens beispielsweise einen Progressbar zu aktualisieren. Und natürlich ließe sich an dieser Stelle noch sehr viel mehr machen (Vergleichsoperationen usw.). "Unberechenbar" ist die Funktion eigentlich nicht.
Herzlich,
Tom
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Probleme mit DbImport()?

Beitrag von ramses »

@Tom, siehst du, auch du verzichtest. Aber ich korrigiere mich gerne: Ich finde die Funktion unberechenbar :D
Valar Morghulis

Gruss Carlo
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9351
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 360 Mal
Kontaktdaten:

Re: Probleme mit DbImport()?

Beitrag von Tom »

Ich verzichte, weil ich eigentlich keine klassische Verwendung für DbImport habe. Doch, eine, und die ist, wie ich gerade gesehen habe, immer noch aktiv: Beim Packing von Tabellen mit Memofeldern (Strukturkopie wird erzeugt, DbImport, bei Erfolg Umbenennung der Tabellen). Problemlos in diversen Topologien. Nur auf den nötigen Massenspeicherplatz sollte man vorher schauen. :wink:

Mein DbImport-Ersatz kümmert sich nebenbei um Abhängigkeiten und Feldersetzungen. Das habe ich vorher nach dem DbImport gemacht. Dadurch hatte ich zuweilen zwei weitere nötige Schritte, um beispielsweise überflüssig gewordene Felder zu entfernen, die ich aber während des Kopierens noch benötigte. Mein eigener Ansatz erlaubt all das innerhalb eines Arbeitsganges. Und er ist auch noch ein paar Millisekunden schneller als DbImport.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Probleme mit DbImport()?

Beitrag von AUGE_OHR »

Jan hat geschrieben:Der Import betrifft normalerweise bis zu ca. 20 Datensätze, also nicht wirklich umfangreich.

Datenbanken sind Clipper mit DBFNTX.
nicht das ich dich falsch verstehe : du "importierst" 20 "Datensätze" in/aus einer Cl*pper DBF von/nach Xbase++ DBF ?

schau dir doch mal C:\ALASKA\XPPW32\Source\SYS\dbbulk.prg an

p.s. ich benutze (immer noch) APPEND FROM xxxx FIELDS ... FOR FORprogressbar() WHILE ...
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14644
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Probleme mit DbImport()?

Beitrag von Jan »

Jimmy,

Du verstehst falsch. Wir importieren BIS ZU 20 Datensätz aus einer Clipper-Datenbank in eine andere Clipperdatenbank.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Probleme mit DbImport()?

Beitrag von Herbert »

Tom hat geschrieben:Ich habe DbImport an den wenigen Stellen, wo ich die Funktion bisher genutzt habe, ebenfalls durch eine eigene Funktion ersetzt, mit FieldGet() und FieldPut() und einem einmaligen Strukturvergleich.
Ich machs auch so.

Du könntest als Alternative bei ganz wenigen Datensätzen nach ganz alter Manier mit COPY TO ("temporärdatei") und einem nachfolgenden Append vorgehen.
Grüsse Herbert
Immer in Bewegung...
Antworten