![]() |
Datenbank: Advantage Database Server • Version: 9.0 • Zugriff über: Advantage Data Architect 9.0
Tabellenspalten von FreeTables in DataDictionary kopieren
Moin Moin DP´ler
Bin noch ein ziemlicher Anfänger in Delphi in Kombination mit der ADS Datenbank, da ich in der Suche nix passendes gefunden habe schildere ich mein Problem mal: Wir haben in der Arbeit sämtliche Datensätze in ADS Freetables (Durch den import durch Paradox damals anscheinend nicht anders möglich, ka). Nun sollen aus den hunderten von FreeTables gewisse Spalten in eine Tabelle in einem neuen Data Dictionary eingefügt werden. 1. Frage: Ist es überhaupt möglich Tabellenspalten und dehren Inhalte, von Freetabels in eine Tabelle in einem DD zu kopieren? 2. Wenn JA, was mach ich hier in der SQL Syntax falsch:
Code:
Also von einem Dictionary in ein anderes klappts, das hab ich getestet.
//FREETABLES -> ADD
INSERT INTO "C:\ADS\OLAP Dictionary\OLAP_DICTIONARY.ADD".TEST_OLAP (TEST_Key) //Gibt das Ziel ADD, sowie die Tabelle und die ZielSpalte an. SELECT KBU_KEY FROM "C:\ag32ads\AFLDaten\K1\M13\01.01.2007-31.12.2007".AGF_KBU; //Gibt die QuellSpalte KBU_Key der QuellTabelle AGF_KBU an Vielleicht kann mir ja jemand weiter helfen wie man das lösen kann, vielleicht klappts ja auch anders oder statt reinem SQL über Delphi-Code oder eine andere SQL Anweisung bin für alles offen, hauptsache ich bekomm die Spalten in mein Dictionary^^. mfg AScu |
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
ich würde die freien Tabellen in ein Unterverzeichnis legen, das macht die Syntax einfacher. Wenn Du dann mit dem Dictionary verbunden bist, reicht folgendes:
Code:
PS: Fehlercodes und -meldungen wären interessant genug, um diese mit-zu-posten;)
insert into mynewtable(field1,field2,field3) select field1,field2,field3 from [.\subfolder\myoldtable]
|
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
Die Freien Tabellen liegen ja in dem Unterverzeichnis 01.01.2007-31.12.2007 wenn du das damit meinst.
Die Fehlermeldung die ich bei meiner Syntax bekommen lautet: poQuery: Error 7200: AQE Error: State = HY000; NativeError = 5174; [iAnywhere Solutions][Advantage SQL][ASA] Error 5174: Advantage failed to open the specified link. C:\ag32ads\AFLDaten\K1\M13\01.01.2007- 31.12.2007: Error 7013: Advantage server file access error. Table name: AGF_KBU |
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
Zitat:
![]() |
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
Jo das habe ich auch rausgefunden, aber ich besitze sämtliche Rechte und wenn ich die selbe Anweisung nicht von Freetables sondern von einem DD ausführe funktioniert es:
Code:
(Die Berechtigungen sind bei dieser Abfrage genau die selben)
//ADD -> ADD FUNKTIONIERT:
INSERT INTO "C:\ADS\OLAP Dictionary\OLAP_DICTIONARY.ADD".TEST_ARTIKEL (TEST_Key) SELECT ArtikelNr FROM "C:\ADS\FIRMA Datenbank\FIRMA_DB.ADD".ARTIKEL |
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
Alles klar die Eckigen klammern warens!! Endlich hab ichs vielen vielen dank das rettet den tag;)
mfg Ascu ps: ich werde sie empfehlen^^ |
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
Zitat:
Übrigens gibt es ab Montag eine Europa-Tour mit dem ADS ![]() |
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
Zitat:
|
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
Liste der Anhänge anzeigen (Anzahl: 1)
Tach Zusammen
Da ich noch eine weitere Frage zu selbigem Thema habe, dachte ich mir das hier zu posten statt einen neuen Thread zu öffnen. Oben genannte und gelöste Problematik möchte ich nun in einem kleinen Delphi Programm lösen. Man klickt auf einen Button und die Datensätze sollen aus der alten Freetable in das Dictionary kopiert werden und über ein DBGrid dann angezeigt werden. Hier der Code des ButtonClick Events:
Delphi-Quellcode:
die Fehlermeldung lautet:
procedure TForm1.Button1Click(Sender: TObject);
begin QuellConnection.ConnectPath := 'C:\ADS\OLAP Dictionary\OLAP_DICTIONARY.ADD'; sInsert := 'insert into test_olap (test_key)'+ 'select kbu_key from [C:\ag32ads\AFLDaten\K1\M13\01.01.2007-31.12.2007\agf_kbu]'; AdsQuery1.SQL.Add(sInsert); AdsQuery1.ExecSQL; AdsQuery1.Active := true; end; nur hab ich die exec funktion doch eingebaut, aseh wohl den wald vor lauter bäumen schon wieder nicht. mfg |
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
Und wenn Du die letzte Zeile einmal weglässt? Es macht ja keinen Sinn, ein INSERT-Query nach Ausführung auf aktiv zu setzen.
|
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
Ja sehr geil hat mal wieder funktioniert!;)
danke danke |
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
Liste der Anhänge anzeigen (Anzahl: 1)
Moin Moin Liebe Delphi Gemeinde
Bei meinem vorher ja schon genannten Projekt möchte ich nun den Quellpfad der Daten über eine selectdirectory() prozedur lösen. Hier mein Code:
Delphi-Quellcode:
(alle Variablen sind ordnungsgemäß deklariert, sieht man hier nur ned^^)
procedure TForm1.BtnQuellPfadClick(Sender: TObject); //Auswahl des Quell-Verzeichniss
begin SelectDirectory('Quellordner auswählen','C:\ag32ads\',QuellPfad); Edit1.Text := QuellPfad; //str := QuellPfad; end; procedure TForm1.Button1Click(Sender: TObject); begin AdsQuery1.SQL.Clear; sInsert := ' insert into test_olap (test_key) select ' + ' kbu_key from [ ' + Edit1.Text + ' \agf_kbu] '; AdsQuery1.SQL.Add(sInsert); AdsQuery1.ExecSQL; end; wenn ich den Pfad fest in das Select Statement einbau funktionierts, wenn ich ihm aber nur den Pfad in einem String übergebe den er oben ausgewählt hat rödelt er recht lang (15-20sec) und man meint es klappt und dann kommt folgender Fehler: Wäre super wenn mir jemand seine Idee mitteilen könnte |
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
nimm mal das erste Leetrzeichen raus bei:
' \agf_kbu] ' |
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
Das hat geklappt, vielen vielen Dank;)
|
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
Hey ho
Ich habe in meiner QuellTabelle ein Feld "Buchubgsdatum" welches vom Typ Timestamp ist. Dieses Feld soll aber genauso in meine neue Tabelle eingefügt werden. Habe schon mit Variant, String, DateTime alles mögliche getestet, aber komme einfach ned auf den Grünenzweig. Hier der Code:
Delphi-Quellcode:
Und Fehlermeldung erhalten ich folgende:
begin
adsconnection1 := TAdsConnection.Create(nil); adsconnection1.AdsServerTypes := [stADS_REMOTE]; adsconnection1.ConnectPath := 'C:\OLAP\OLAP_DICTIONARY\OLAP_DICTIONARY.ADD'; adsconnection1.Username := 'Adssys'; qryOlap := TAQuery.Create(nil); qryOlap.AdsConnection := adsconnection1; qryFibu := TAQuery.Create(nil); qryFibu.AdsConnection := Connection; qryFibu.SQL.Add('select * from [C:\ag32ads\AFLDaten\K1\M13\01.01.2007-31.12.2007\agf_kbu]'); qryFibu.Open; qryFibu.First; while not qryFibu.Eof do begin buchungsdat_TS := qryFibu.FieldByName('KBU_BUCHUNGSDATUM').AsString; sInsert := 'insert into olap_fibu_daten (Buchungsdatum) values(' + buchungsdat_TS + ')'; qryOlap.SQL.Clear; qryOlap.SQL.Add(sInsert); qryOlap.ExecSQL; qryFibu.Next; end; qryFibu.Close(); FreeAndNil(qryFibu); end;
Code:
Erste Gelegenheit für Exception bei $754D9617. Exception-Klasse EADSDatabaseError mit Meldung 'Error 7200: AQE Error: State = 42000; NativeError = 2116; [iAnywhere Solutions][Advantage SQL Engine]Malformed number: 01.01 -- Location of error in the SQL statement is: 175 There was a problem parsing the value list in the INSERT INTO statement.'. Prozess OlapUI.exe (4608)
|
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
Ich würde das Insert-Statement einmalig vor der Schleife setzen und vor allem Parameter verwenden. Und falls das Buchungsdatum kein alphanumerisches Feld sein sollte, kann man es doch gleich unbehandelt als Parameter weitergeben.
|
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
Sry ich komm jetzt grad so garned drauf was du meinst. Parameter für die Pfade meinst du?
|
AW: Tabellenspalten von FreeTables in DataDictionary kopieren
Delphi-Quellcode:
...
qryFibu.Open; //SQL einmalig setzen qryOlap.SQL.Text := 'insert into olap_fibu_daten(Buchungsdatum) values(:buchdat)'; while not qryFibu.Eof do begin //in der Schleife nur Parameter neu belegen qryOlap.ParamByName('buchdat').Value := qryFibu.FieldByName('KBU_BUCHUNGSDATUM').Value; qryOlap.ExecSQL; qryFibu.Next; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz