vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
Re: Virtuelle Datenbank 
Autor: SL
Datum: 23.01.04 16:22

Zum Thema Virtuelle Recordsets stand auf dieser Homepage irgendwann einmal:

Der Arbeitsspeicher selbst ist zur Datenbank geworden. Es lassen sich mit OLE DB und deren Dienst ADO virtuelle Recordsets im Speicher bilden und wie Datenbanken programmieren. Ein OLE DB basierender Recordset braucht keine Datenbank und Abfrage - er läßt sich direkt im Arbeitsspeicher erstellen, auf Dateien sichern und auch wieder davon laden. Fügen Sie über Projekte/Verweise einen Verweis auf die Microsoft Active Data Objects 2.x ein (ADO 2.x). Irgendwo deklarieren wir:

Private virtualRs As New ADODB.Recordset
Private dynFields() As Variant ' !Obacht
Private Sub CreateVirtualRecord()
' Felder deklarieren
dynFields = Array("Name", "Vorname", "Geburtsdatum", _
"Strasse", "PLZ", "Ort", "Telefon")

With virtualRs
.Fields.Append "Name", adBSTR, 75
.Fields.Append "Vorname", adBSTR, 50
.Fields.Append "Geburtsdatum", adDBDate
.Fields.Append "Strasse", adBSTR, 75
.Fields.Append "PLZ", adBSTR, 10
.Fields.Append "Ort", adBSTR, 75
.Fields.Append "Telefon", adBSTR, 20
End With
End Sub

Soweit mal die Definition unseres virtuellen Recordsets. Besteht wie man sieht aus sieben Datenfeldern - banale Adressen. Oben haben wir in dynFields quasi den Header der Feldnamen definiert. Ist der Recordset einmal so erstellt, läßt er sich verwenden, wie jeder bekannte Recordset auch, wir füllen ihn mal mit Daten. Angenommen, wir haben sieben zu den definierten Datenfeldern gehörende Textfelder in unserer Form. Weil wir clever waren, heißen die Textboxen auch noch so, wie unsere definierten Datenfelder! Wir haben aber unterschiedliche Datentypen: Text und Date, macht nichts weil: Wir sind ja dynamisch. Die Text-Eigenschaft von Textboxen ist vom Typ: Variant.

Private Sub SaveVirtualRS()
Dim dynV As Variant
Dim oT As Control
Dim n As Integer

With virtualRS
.Open

For Each oT In Form1.Controls
If TypeOf oT Is TextBox Then
dynV(n) = CVar(oT.Text)
n = n + 1
End If
Next

.AddNew dynFields, dynV
.UpDate
End With
End Sub

Das Weitere: Wie rufe ich den Rs ab, was kann ich alles damit machen, ist völlig mit dem identisch, was Sie bisher über Recordsets wußten. Dazu verweisen wir mal auf die Workshops zum Thema Datenbanken - Sie können alles tun, nur: Um eine SQL - Abfrage durchzuführen, müssen Sie die virtualRs.Filter - Methode verwenden. Ihr übergeben Sie den SQL - String ohne "SELECT * FROM Tabelle WHERE". Filter ist der Teil, nach der SQL WHERE - Klausel.

Wir speichern den Recordset auf die Platte!

Private Sub Command1_Click() ' kennen wir irgendwie ...
' jetzt ein Algorithmus für Sehnescheidenentzündungen
virtualRS.Save "Pfad_Name_der_Datei", 0
End Sub

Nachdem wir es bis hierher geschafft haben - ein noch größerer Algorithmus, der unser Werk als Recordset wieder in den Speicher pumpt:

Private Sub LoadVirtualRS(Byval sFileName As String)
virtualRS.Open sFileName, "Provider = MSPersist"
End Sub

Nochmals kurz: Mit unserer Obj-Var virtualRS können Sie so arbeiten, als hätten Sie es mit einem richtigen DB-Recordset zu tun, also Edit, Delete u.v.a.m - nur keine Hemmungen.

Anmerkung (SL):

Wird das virtuelle Recordset mit .Close geschlossen, geht seine Struktur verloren!. Vor einem erneuten .Open muß erneut CreateVirtualRecord aufgerufen werden!!!
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Virtuelle Datenbank1.150That22.01.04 17:12
Re: Virtuelle Datenbank759SL23.01.04 09:40
Re: Virtuelle Datenbank744That23.01.04 14:45
Re: Virtuelle Datenbank1.013SL23.01.04 16:22
Re: Virtuelle Datenbank724That23.01.04 18:11

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel