Autor
|
Thema: Daten aus MS Access einlesen (1475 mal gelesen)
|
Pattex Mitglied
Beiträge: 19 Registriert: 10.01.2007 eM-Plant 7.5 unter Win XP
|
erstellt am: 10. Jan. 2007 16:21 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum-Mitglieder, ich möchte von eM-Plant aus Daten aus MS Access einlesen. Dabei will ich gezielt auf den ODBC Baustein verzichten und verwende daher DDE. Ziel ist es, die Einträge einer Datenbank-Abfrage in eine Tabelle im Modell einzulesen. Die Beispiele in der Hilfe-Datei sind leider sehr spärlich. Ich habe die MS Access Datenbank geöffnet und mit DDEconnect eine DDE-Verknüpfung hergestellt und mit DDEExecute eine Abfrage in der Datenbank geöffnet. An dieser Stelle komme ich nicht weiter, da ich die Syntax zur Abfrage der einzelnen Einträge nicht kenne. Kann mir da jemand weiterhelfen? Vielen Dank im Voraus, Pattex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 10. Jan. 2007 23:35 <-- editieren / zitieren -->
so gehts mit einer DB "c:\temp\test.mdb" und einer Tabelle "Tabelle1"; Access sollte geoeffnet sein. is i,j,k,m:integer; str :string; dbname,tabname,name :string; do name:="test"; dbname:=sprint("c:\temp\\",name,".mdb"); ---db-name tabname:="tabelle1"; --tabellen-name ddedisconnectall; i:=ddeconnect("Msaccess","System"); str:=sprint("[OpenDatabase ",chr(34),dbname,chr(34),"]"); print ddeexecute(1,str,1000); -- db oeffnen ---str:=sprint(dbname,";TABLE ",tabname); -- tabellendaten str:=sprint(dbname,";SQL select * from tabelle1"); --SQL abfrage print str; k:=Ddeconnect("MSAccess",str); print Dderequest(k,"FieldNames"); --Spalten name print Dderequest(k,"ALL"); -- alle Felder in Tabelle1 str:=sprint("[CloseDatabase]"); ddeexecute(j,str,1000); -- db-schliessen ddedisconnectall; end; ------------------ Der Simulator |
Pattex Mitglied
Beiträge: 19 Registriert: 10.01.2007 eM-Plant 7.5 unter Win XP
|
erstellt am: 11. Jan. 2007 11:32 <-- editieren / zitieren --> Unities abgeben:
Hallo Simulator, danke für die Unterstützung. Gemäß der Anleitung funktioniert es jetzt soweit, daß ich die Einträge aus der MS Access Datenbank in eM-Plant komplett als 1 string vorliegen habe (Spalte oder ganze Tabelle). Nun möchte ich diese Einträge in eM-Plant in eine Tabelle schreiben. Dabei habe ich nun das Problem, daß ich den string immer nur in ein Tabellenfeld schreiben kann (z.B. Tabelle[1,1]:=...), oder gibt es da einen Befehl, der mir die ganze Tabelle befüllt, auf den ich noch nicht gekommen bin? Das wäre die beste Lösung!!! Eine weitere Möglichkeit wäre, Eintrag für Eintrag einzulesen und dann Zelle für Zelle in eM-Plant zu schreiben. Dazu fehlt mir jedoch die Syntax, wie ich auf einen einzelnen Eintrag in der Datenbank zugreifen kann (Tabelle und Spalte funktioniert ja jetzt bereits) - was muß ich dann anstelle von "ALL" eintragen? . Andernfalls muß ich den string eben von Tabulator zu Tabulator zerstückeln und mit einer Schleife arbeiten, ist jedoch umständlicher. Meine Methode sieht inzwischen so aus: -------- is datenbank,str : string; Kanal:integer; do --Daten aus MS Access Datenbank einlesen DDEdisconnectAll; datenbank:=Dateiverknüpfung.dateiname;--Datenbank Dateiverknüpfung.oeffneDatei;--Datenbank öffnen str:=sprint(datenbank,";SQL select Spaltenname from Tabellenname"); --SQL Abfrage Kanal:=DDEconnect("MSAccess",str); print DDErequest(kanal,"ALL"); Dateneingang[1,1]:=DDErequest(kanal,"All");-- in Zelle [1,1] schreiben str:=sprint("[CloseDatabase]"); DDEexecute(Kanal,str,1000); -- db-schliessen DDEdisconnect(Kanal); end; -------- Nochmals vielen Dank und viele Grüße, Pattex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 11. Jan. 2007 15:09 <-- editieren / zitieren -->
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|