Autor |
Beitrag |
Buggi
      
Beiträge: 35
|
Verfasst: Fr 13.09.02 09:03
Hi Leutz,
ich hab 'ne Paradox-Datenbank übernommen und inzwischen feststellen müssen, das die einzelnen Tabellen unterschiedlicher Version sind (Paradox 5.0 bzw. 7) und auch unterschiedliche Sprachtreiber benutzen (Paradox 'intl' bzw. Pdox ANSI Intl).
Kann man die Tabellen auf einen Stand bringen und gibt es eine Empfehlung für einen bestimmten Sprachtreiber?
Dank im voraus,
Burkhard
_________________ Delphi 4, BDE, Paradox
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Fr 13.09.02 09:12
Glück gehabt
Paradox Intl und Pdox ANSI Intl verwenden so weit ich weiss die gleichen Zeichensatztabellen. Zumindest hab ich dabei noch nie Probleme gehabt.
Als Standardeinstellung hat sich Pdox ANSI Intl bestens bewährt.
Zum konvertieren der Tabellen von 5 => 7 gibts leider keine Möglichkeit. Du kannst nur eine neue Tabelle erstellen und den Inhalt der alten übernehmen (mit Datapump).
Aber eine PDX 7 Tabelle wird nur dann als PDX 7 angezeigt, wenn du deren besondere Merkmale auch verwendest. Im Klartext: Ex gibt eigentlich keinen Grund das zu machen.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
Buggi 
      
Beiträge: 35
|
Verfasst: Fr 13.09.02 10:01
Dank erstmal für die prompte Antwort LCS,
ich hatte schon einmal ein Problem einer SELECT-Anweisung in einem Beitrag beschrieben und im Zuge dessen die unterschiedlichen Sprachtreiber bemerkt. Vielleicht kannst Du Dir ja ein Reim auf folgendes machen :
select name,gruppe,auftragsnummer, produkt from auftrag1 a, Wochenplan1 w,verantwortlicher v WHERE w.woche=26 AND w.jahr=2002 AND w.auftragsnummer=a.Auftragsnummer AND a.verantwortlicher=v.lfdnummer AND a.Sollzeit='' order by gruppe,auftragsnummerBei dieser Anweisung werden die Umlaute in den Spalten "name" und "gruppe" nicht richtig dargestellt.
select name,gruppe,auftragsnummer, produkt from Wochenplan1 w,verantwortlicher v, auftrag1 a WHERE w.woche=26 AND w.jahr=2002 AND w.auftragsnummer=a.Auftragsnummer AND a.verantwortlicher=v.lfdnummer AND a.Sollzeit='' order by gruppe,auftragsnummerBei dieser Anweisung werden allerdings die Umlaute der Spalte "produkt" nicht richtig dargestellt.
Es hatte jemand darauf hingewiesen, das das Problem möglicherweise mit dem Sprachtreiber zusammenhängt.
Hast Du oder irgentein(e) andere(r) 'ne Idee
Gruß Burkhard
_________________ Delphi 4, BDE, Paradox
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Fr 13.09.02 10:09
Hi
Leider kann ich da jetzt net so genau ersehen, welche Felder aus welcher Tabelle kommen. Stell doch erst mal bei den Spaltenangaben hinter Select ebenfalls die Aliasnamen davor.
Bei der Sprachtreibergeschichte gilt ja, dass sich der sich nur für den DB-Treiber einstellen lässt. Wenn für Paradox Pdox ANSI Intl eingestellt ist, dann gilt das für alle Tabellen. Sind die Tabellen auf unterschiedlichen PC oder mit unterschiedlichen Treibereinstellungen erzeugt worden?
Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Fr 13.09.02 10:21
Noch ein Nachtrag
Ich hab das grade noch mal getestet. Die beiden Sprachtreiber sind definitiv nicht identisch. Paradox Intl verwendet intern INTL und das ist ASCII.
Du kannst ja mal Spasseshalber die *.DB Dateien mit nem Hexeditor angucken. Der Sprachtreiber INTL oder ANSIINTL steht hinter der Liste der Feldnamen.
So ausm Stehgreif raus würd ich mit nem kleinen Prog die Stringdaten der entsprechenden Tabellen mit OEMToChar auf ANSI-Zeichensatz konvertieren.
Aber vielleicht gibts ja noch ne andere Lösung.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
Buggi 
      
Beiträge: 35
|
Verfasst: Fr 13.09.02 10:41
Also jetzt nochmal genau :
select v.name, w.gruppe, a.auftragsnummer, a.produkt from verantwortlicher v, Wochenplan1 w, auftrag1 a WHERE w.woche=26 AND w.jahr=2002 AND w.auftragsnummer=a.Auftragsnummer AND a.verantwortlicher=v.lfdnummer AND a.Sollzeit='' order by gruppe,auftragsnummerSo werden die Umlaute in derSpalte Produkt nicht richtig dargestellt.
Die Tabellen :
Verantwortlicher : Paradox7 / Pdox Ansi Intl
Wochenplan1 : Paradox7 / Pdox Ansi Intl
Auftrag1 : Paradox5.0 / Paradox 'intl'
Burkhard
_________________ Delphi 4, BDE, Paradox
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Fr 13.09.02 10:46
Hi
ist mittlerweile verständlich warum das passiert. INTL = DOS. Guck dir mal mein letztes Posting an. Ist wahrscheinlich untergegangen
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
Buggi 
      
Beiträge: 35
|
Verfasst: Fr 13.09.02 11:12
Dank Dir Lothar,
ich werd wohl die Tabellen neu erstellen und auf gleiche Version und Sprachtreiber auf Ansi-Zeichensatz setzen. Dann bin ich auf der sicheren Seite. Mal schauen wie ich das am besten (schnellsten) mache. Sind nämlich ein paar mehr Tabellen.
Falls Du 'ne Idee hast, dann zier Dich nicht und poste sie
Burkhard
_________________ Delphi 4, BDE, Paradox
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Fr 13.09.02 11:58
Ok,
hab ne relativ simple Methode gefunden. Sprachtreiber muss auf Pdox ANSI Intl eingestellt sein.
Mini-prog mit BatchMove, Table1, Table2.
Table1 ist Ursprungstabelle
Table2 wird neue Tabelle
Quelltext 1: 2: 3: 4: 5: 6: 7:
| with BatchMove do begin Mode := batCopy; Transliterate := True; Source := Table1; Destination := Table2; Execute; end; |
Ergebniss: neue Tabelle mit gleicher Struktur und gleichem Inhalt, aktuellem Sprachtreiber und konvertierten Strings
Hoffe das hilft dir
Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
Buggi 
      
Beiträge: 35
|
Verfasst: Fr 13.09.02 13:53
Super Sache Lothar,
funzt wohl, hat aber einen entscheidenen Haken: Meine ganzen Indizes sind weg und die Auftragsnummern sind neu numeriert worden.
Falls du dafür 'ne Lösung hast wäre ich dir sehr dankbar, denn ich hab bisher noch nicht mit Batchmove gearbeitet und eigentlich sieht der Ansatz ja schon sehr gut aus.
Gruß Burkhard
_________________ Delphi 4, BDE, Paradox
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Fr 13.09.02 14:12
Buggi hat folgendes geschrieben: | ...denn ich hab bisher noch nicht mit Batchmove gearbeitet |
Ich auch nicht  Hab ich auch nur im Schnellverfahren ausprobiert. Verwendest du für deine Auftragsnummern AutoInc-Felder? Also ausser ein Programm zu schreiben dass alles selbst macht, hab ich auch keine Patentlösung. Zur Not könntest du noch folgendes machen:
Mit DB-Oberfläche Ursprungstabelle öffnen und umstrukturieren
AutoInc ==> Integer
Dann mit Batchmove konvertieren
Mit DB-Oberfläche neue Tabelle öffnen, umstrukturieren
AutoInc wieder einstellen und Indexes neu anlegen
Wenn du zwanzig Tabellen hast, ist das Wocheende gelaufen
Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
Buggi 
      
Beiträge: 35
|
Verfasst: Fr 13.09.02 14:22
Ja Auftragsnummer is ein Autoinc-Feld. Und ich hab leider 52 Tabellen aber nicht alle haben ein Autoinc-Feld.
Ich probiers erst mal nach deiner Devise aus.
Dank ersma
Gruß Burkhard
_________________ Delphi 4, BDE, Paradox
|
|
|