Entwickler-Ecke
Datenbanken - MS-SQL Tabelle exportieren in Paradox Tabelle
AndreasL. - Mo 09.05.05 14:09
Titel: MS-SQL Tabelle exportieren in Paradox Tabelle
Hallo Leute,
Bin neu hier, habe aber die Suchfunktion trotzdem schon 2 Stunden gequält, folgendes Problem:
Ich möchte eine MS-SQL Tabelle, nennen wir sie "Artikel" mit samt Inhalt in eine Paradox Tabelle exportieren/duplizieren. Die Paradox Tabelle existiert dabei noch nicht und soll vor dem exportieren erstellt werden, nach den Spezifikationen der MS-SQL Tabelle.
Zuerst dachte ich, okay, BatchMove, das funktioniert jedoch nur mit TTable Objekte, da ich über ADO mit dem MS-SQL Server verbunden bin, geht dies schon mal nicht.
Hat jemand eine Idee wie ich das lösen könnte?
Viele Grüsse
Andreas
jasocul - Mo 09.05.05 14:36
Von MS-SQL nach Paradox? Naja, musst du selbst wissen.
Wenn du TBatchMove nicht verwenden kannst, musst du wohl oder übel die Paradox-Tabelle einmal erzeugen und alle Datensätze druchlaufen und übertragen.
Ich hoffe, dass du keine AutInc-Felder benutzt, die auch noch referenzieren. Da würdest du dann sicher Probleme bekommen.
AndreasL. - Mo 09.05.05 14:44
Also AutoInc Felder sind nur in der MS-SQL Tabelle vorhanden. Ich muss vielleicht ein wenig weiter ausholen:
Wir haben die Paradox Tabellen in MS-SQL migriert (funzte TipTop), da aber unser altes bzw. eingekauftes Produkt "leider" Paradox Files importiert, müssen wir die MS-SQL Tabelle als Paradox Tabelle exportieren können, deshalb der unschöne Export als Paradox :wink:
Werde nun wohl oder übel eine "Default"-Paradox Tabelle erstellen, welche bei jedem Export zuerst geleert wird und dann wieder "gefüllt" wird mit den MS-SQL Datensätzen.....
Grüsse
Andreas
jasocul - Mo 09.05.05 15:06
Du kannst die Paradox-Tabelle auch zur Laufzeit erzeugen. Mit SQL über "Create Table". Es geht iirc auch mit der TTable-Komponente. Das ist aber schon ein paar Jahre her, dass ich das mal probiert habe.
Eventuell habe ich irgendwo noch Sourcen. Aber mit SQL sollte es auc funktionieren.
AndreasL. - Di 10.05.05 09:50
Also, ich bin nun etwas weiter, aber immer noch nicht am Ziel :)
Ich erstelle nun die Paradox tabelle folgenderweise:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| procedure TFormExport.p_CopyTableStructure(Source: TADODataSet; DB,Dest: string); var NewTable: TTable; hs: string; i: integer; begin NewTable := TTable.Create(self); with NewTable do begin Databasename := DB; Tablename := Dest; FieldDefs.Assign(Source.FieldDefs); IndexDefs.Assign(Source.IndexDefs); CreateTable; end;
if Dest = 'Artikel.DB' then NewTable.FieldDefs.Find('ARTI_ID').DataType := ftInteger;
NewTable.Open; Source.First; with NewTable do begin while not Source.EOF do begin Append; for i := 0 to Source.FieldCount - 1 do begin hs := Source.Fields[i].FieldName; NewTable[hs] := Source[hs]; end; Source.Next; end; end;
if Dest = 'Artikel.DB' then NewTable.FieldDefs.Find('ARTI_ID').DataType := ftAutoInc;
NewTable.Close; NewTable.Destroy;
end; |
Nun folgende Probleme:
- Das Autoinkrement Feld kann ich aus irgendwelchen gründen auf der "NewTable" nicht ändern, selbst im Datenbank Explorer nach dem erstellen nicht?!?!?
- nvarchar 15 bzw. nvarchar 50 Felder der MS-SQL Tabelle werden in der Paradox Tabelle als ALPHA 1 erstellt?!?!?
Danke schon mal für eure Hilfe
Grüsse
Andreas
jasocul - Di 10.05.05 09:56
Feldtypen sind in Paradox halt andere. Da musst du wohl per Hand definieren.
Auf das Problem mit dem AutoInc hatte ich schon hingewiesen. AutoInc-Feldern kannst du in Paradox nichts zuweisen!
Entweder darf es kein AutoInc sein oder du darfst diesem Feld nichts zuweisen. Es wird "auto"matisch gefüllt.
AndreasL. - Di 10.05.05 10:00
Das ist mir schon klar, dass ich AutoInc feldern nichts zuweisen kann darum möchte ich auch den FeldTyp ändern, aber auch dies scheint nciht möglich zu sein:
Delphi-Quelltext
1: 2:
| if Dest = 'Artikel.DB' then NewTable.FieldDefs.Find('ARTI_ID').DataType := ftInteger; |
und nach dem Daten importieren setzte ich das Feld wieder auf den Typ AutoInc:
Delphi-Quelltext
1: 2:
| if Dest = 'Artikel.DB' then NewTable.FieldDefs.Find('ARTI_ID').DataType := ftAutoInc; |
Grüsse
Andreas
jasocul - Di 10.05.05 10:03
Das habe ich so noch nie versucht.
Ich vermute aber, dass das aus Paradox-Verwaltungstechnischen Gründen nicht möglich ist. Der Zählwert muss irgendwo verwaltet werden und da wird Paradox sagen, dass das Ändern in ftAutoInc mit einer gefüllten Tabelle nicht zulässig ist.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!