Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Daten aus MS Access einlesen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Daten aus MS Access einlesen (1475 mal gelesen)
Pattex
Mitglied



Sehen Sie sich das Profil von Pattex an!   Senden Sie eine Private Message an Pattex  Schreiben Sie einen Gästebucheintrag für Pattex

Beiträge: 19
Registriert: 10.01.2007

eM-Plant 7.5 unter Win XP

erstellt am: 10. Jan. 2007 16:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

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



Sehen Sie sich das Profil von Pattex an!   Senden Sie eine Private Message an Pattex  Schreiben Sie einen Gästebucheintrag für Pattex

Beiträge: 19
Registriert: 10.01.2007

eM-Plant 7.5 unter Win XP

erstellt am: 11. Jan. 2007 11:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Versuchs mal mit "nextrow"

oder schau auch mal hier

http://support.microsoft.com/kb/89586/de

------------------
Der Simulator

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz