Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

ADO recordset in und aus Datei

Begonnen von Milvus, Februar 11, 2019, 15:50:37

⏪ vorheriges - nächstes ⏩

Milvus

Guten Tach,

ich speichere ein ADO recordset als Datei ab und lese das aus einer anderen Anwednung wieder ein, ebenfalls als ADO-Recordset.

Zur Frage: Nach dem Einlesen möchte ich das Recordset als Tabelle in der Anwendung abspeichern. Die Anwendung ist ein Access-Frontend.

Ziel ist: Es soll SQL bei den importieren Daten möglich sein. Das ist dann wohl am einfachsten, wenn die Daten in einer Tabelle vorliegen.

Ich weiß, ich kann ein TableDef erzeugen, in einem DoppelLoop alle Felder in der Tabelle erzeugen und die Daten reinschreiben. Frage: Gibt es einen Standard dafür? Müsste doch!?!

Danke Euch!

MzKlMu

Hallo,
warum erstellst Du mit einer Tabellenerstellungsabfrage nicht gleich eine Tabelle ?
Und in der anderen Anwendug diese Tabelle verknüpfen.
Gruß Klaus

ebs17

ZitatGibt es einen Standard dafür?
Manche haben den Standard Einfachheit und Direktheit, was dann mit Fehlerarmut kooperiert.

Wenn beide Anwendungen mit Tabellen/Abfragen umgehen können, wäre doch die erste Betrachtung einer Prüfung wert, ob sich die zweite Anwendung die Daten direkt per Verknüpfung holen könnte.
Mit freundlichem Glück Auf!

Eberhard

Milvus

Nee und nee,

will ich so nicht aus folgendem Grund:

Ich habe n Frontendanwendungen aus denen ich Daten ablegen will, die von einem weiteren Frontend verarbeitet werden. Dieses Frontend enthält ausschließlich Klassen und keine direkte Verbindung zu den anderen Anwendungen und die will ich auch nicht haben, auch nicht temporär.

Das Abspeichern und Re-Initialisieren funktioniert tadellos bis dahin. Daher erscheint mir das erst mal als der optimale Weg. Das einzige was ich suche ist, aus dem Recordset direkt eine Tabelle zu machen.

Klar gibt es etliche Alternativen. Die suche ich aber nicht :o


markusxy

Zitat von: Milvus am Februar 11, 2019, 21:15:38
Das einzige was ich suche ist, aus dem Recordset direkt eine Tabelle zu machen.

In der Dokumentation findest du alle Möglichkeiten.
Da musst du gar nicht lange suchen.  ;D

Josef P.

Hallo!

Die Anwort ist einfach: Du kannst ein Recordset in VBA nicht in direkt in eine Tabelle konvertieren.

Wie ist das Recordset als Datei abgespeichert? Falls das eine xml-Struktur ist: man kann xml auch als Tabelle importieren.

mfg
Josef

ebs17

ZitatDas einzige was ich suche ist, aus dem Recordset direkt eine Tabelle zu machen.
Mit der Methode Getstring kann man den Inhalt eines Recordsets unmittelbar in eine Texttabelle (CSV) ablegen. In Zusammenhang mit einer Importspezifikation oder einer Schema.ini bzw. in völliger Übereinstimmung mit den Leseregeln für eine Texttabelle aus der Registry wird das eine vollwertige externe datenbanklesbare Tabelle.
Mit einer CSV sollte jede Anwendung klarkommen können.
Mit freundlichem Glück Auf!

Eberhard

Milvus

Zitat von: ebs17 am Februar 12, 2019, 09:54:33
ZitatDas einzige was ich suche ist, aus dem Recordset direkt eine Tabelle zu machen.
Mit der Methode Getstring kann man den Inhalt eines Recordsets unmittelbar in eine Texttabelle (CSV) ablegen. In Zusammenhang mit einer Importspezifikation oder einer Schema.ini bzw. in völliger Übereinstimmung mit den Leseregeln für eine Texttabelle aus der Registry wird das eine vollwertige externe datenbanklesbare Tabelle.
Mit einer CSV sollte jede Anwendung klarkommen können.

Danke, erscheint mir der besten Ansatz.

Zurzeit wird es so gemacht: Das ADO RS wird als .DAT von Anwendung A abgespeichert und die .dat von Anwendung B aufgenommen.

Anwendung B ist auf das Datenmanagement getrimmt, d.h. Exportiert in beliebige Formate und Dinge, wie z.B. Excel.

Das funktioniert auch wunderbar. Anwendung A hatte ein ADO rs und Anwendung B holt sich das ADO rs, womit dann soweit alles machbar ist, was Recordsets betrifft.

Anwednung B kann aber mehr, was mir dem Recordset nicht geht und zurzeit von mir abgeschaltet wurde, nämlich über SQL mit den Daten alles mögliche anzustellen, z.B. filtern. Das geht mit dem rs nicht, dafür braucht es eine Tabelle oder ein gespeichertes View. Daher die Frage, wie man aus dem RS oder der .dat direkt eine Tabelle weg schreibt.

Die Antworten zeigen mir, dass es für das rs bzw. die .dat keine Standardprozedur gibt. D.h. Ansatz wäre dann eher über .csv mit einer Spezifikation.

ebs17

Zitatz.B. filtern. Das geht mit dem rs nicht
So viel ich weiß, kann man auch ein Recordset filtern (=> Dokumentation lesen), ich gebrauche so etwas aber nicht. Ich bevorzuge Tabellen und SQL ohne die umständlichen Umwege.
Mit freundlichem Glück Auf!

Eberhard

Milvus

Ich filter das auch nicht, noch nie gemacht. Da nehme ich lieber den Standard: SQL.

Mir ist bei der Geschichte noch was aufgefallen.

Es gibt zwei Konstanten zum speichern des ADO-RS:

adPersistADTG    
adPersistXML    

Ich krieg nur das erste zum Laufen. Unterstützt Access das XML nicht?

PhilS

Zitat von: Milvus am März 02, 2019, 16:21:57
Es gibt zwei Konstanten zum speichern des ADO-RS:

adPersistADTG   
adPersistXML   

Ich krieg nur das erste zum Laufen. Unterstützt Access das XML nicht?
Ich kann zwar zur Problemlösung nicht beitragen, aber mit Access hat das hier nichts zu tun. ADO ist in dieser Hinsicht eigenständig und nicht durch Access eingeschränkt o.ä.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

ebs17

Falls Dir der Export als XML gelänge: Kannst Du mit dieser in dieser Form etwas anfangen, oder genügt es, "eine Datei" zu haben?
Mit freundlichem Glück Auf!

Eberhard

Milvus

Naja,

ich suche nach einem Datentauschformat, das mögichst allgemein und easy ist.

XML ist ja ein Standard, das andere Ding kannte ich bis vor kurzem noch nicht.

Worum es mir geht:

1. Aus Source 1 Datei mit Daten ablegen
2. Daten in anderer Andwendung aufgreifen und verwenden

Damit gehts: adPersistADTG

xml aber nicht. Was ist das für n Gespenst?

PhilS

Weiterhin ohne es ausprobiert zu haben: "Geht nicht" ist eine komplett unzulängliche Problembeschreibung.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

ebs17

#14
Zitatich suche nach einem Datentauschformat, das mögichst allgemein und easy ist
CSV (= Texttabelle) ist an Dir vorbeigegangen?

Ich kann mir kaum etwas Einfacheres und Schlankeres vorstellen, und eine Software, die damit nicht umgehen kann, wird es in einem Umfeld mit geringsten profihaften Ansprüchen nicht geben können.
Mit freundlichem Glück Auf!

Eberhard