Seite 1 von 1

MS-Access Datenbank schreiben und lesen

Verfasst: 24.02.2005 11:45
von raynay
Hallo @all!

Ich habe eine MS-Access-DB eingerichtet, die aus vier Tabellen
besteht, die miteinander über ein Feld verknüpft sind.

Wie kann ich in die Datenbank/Tabellen/Felder schreiben und wie
wieder auslesen? Gibt es da einen Code zum Anschauen?

Welche Alternativen gibt es unter Windows, mit vernünftigen DB-Frontend?

Verfasst: 24.02.2005 12:16
von bluejoke
Schau dir die Database-Lib von PB an (keine Userlib). Über OECD müsste man doch darauf zugreifen können, oder?

Simon

Verfasst: 24.02.2005 12:31
von Belgarath
LOL
Ich glaube du meinst die ODBC.
Die OECD ist für die wirtschaftliche Zusammenarbeit in Europa.

Sorry, konnte ich mir jetzt nicht verkneifen :wink:

Verfasst: 24.02.2005 17:30
von bluejoke
Stimmt, wollte noch dazu schreiben, dass ich mir beim Namen nicht sicher bin

Antwort unter www.purearea.net gefunden

Verfasst: 25.02.2005 16:11
von raynay
Anbei der Code zur Abfrage. Nach einigem Probieren ging es dann....


; Autor: Logan5
; Datum: 30.11.02
; Forum: Deutsches Forum
; Quelle www.pureaera.net
; Link http://www.purearea.net/pb/german/index.htm
; Link des Programms http://www.purearea.net/pb/CodeArchiv/D ... atabase.pb


;Autor logan5, 30. Nov 2002

If InitDatabase()

result = OpenDatabase(0,"Kasam Datenbank","maier","bravo")



;--------------------------------------------------------------------------------------
; Was InitDatabase() bedeutet am besten in der hilfe nachschauen
; result wird nur abgefragt um festzustellen ob die Datenbank geöffnet werden kann
;
; OpenDatabase(#Database, ODBCDatabaseName$, User$, Password$)
;
; #Database ist einfach eine nummer die man festlegt
; ODBCDatabaseName$ jetzt wird's schwieriger, hier nicht die datenbank datei eintragen
; sondern, den namen den ihr im odbc treiber für die datenbank vergeben habt
; zu finden in einstellungen systemsteuerung odbc datenquelle system dsn
; User$ und Password$ falls die access datei mit einem username und password
; gesichert ist hier angeben, falls nicht ist völlig egal was hier steht
;--------------------------------------------------------------------------------------

If result > 0
MessageRequester("Kasam Datenbank", "Kasam Datenbank ist offen",#PB_MessageRequester_Ok )
EndIf

;--------------------------------------------------------------------------------------
; Hier wird nur noch einmal ausgegeben, das die datenbank offen ist
;--------------------------------------------------------------------------------------


Abfrage$="Select * from stratab"

;--------------------------------------------------------------------------------------
; Hier wird die abfrage für die datenbank formuliert diese braucht man später
; für DatabaseQuery(Abfrage$)
; wenn ich den befehl richtig verstanden hab bedeutet er wähle (select) alles (*)
; aus (from) der Tabelle stratab aus
; stratab ist eine Tabelle aus der Access datei die ich abfragen will
;--------------------------------------------------------------------------------------



OpenConsole()

;--------------------------------------------------------------------------------------
; in meinem beispiel möchte ich den dateninhalt einfach nur ausgeben, also
; öffne ich hier eine console. genauso gut könnte man sie an ein array übergeben oder
; nach bestimmten sätzen suchen
;--------------------------------------------------------------------------------------


If DatabaseQuery(Abfrage$)

;--------------------------------------------------------------------------------------
; die erklärung für DatabaseQuery am besten in der hilfe nachschlagen
;--------------------------------------------------------------------------------------



While NextDatabaseRow()

;--------------------------------------------------------------------------------------
; hier beginnt die abfrage meiner tabelle stratab (ist übrigens die abkürzung für
; strassennamen tabelle)
; die tabelle beeinhaltet nur zwei spalten eine mit der strassen id und eine mit dem
; strassennamen
; ich muss die feldbezeichnung innerhalb der access datei gar nicht kennen, denn ich
; rufe die erste spalte mit GetDatabaseString(0), die zweite mit GetDatabaseString(1)
; usw. auf und speichere sie in freigewählten variablennamen unter purebasic mit einer
; while wend schleife durchlaufe ich die ganze datei
;--------------------------------------------------------------------------------------

ID = GetDatabaseLong(0)
Bezeichnung.s=RTrim(GetDatabaseString(1))
;--------------------------------------------------------------------------------------
; in meinen beispiel gebe ich die daten nur auf dem bildschirm aus, der rest dürfte
; klar sein
;--------------------------------------------------------------------------------------


Print (Str(ID))
Print(" ")
PrintN (Bezeichnung.s)

Wend


Else
MessageRequester("Fehler","ODCB Umgebung nicht vorhanden",#MB_ICONERROR)
End
EndIf

CloseDatabase(0)

CloseConsole()

EndIf
; ExecutableFormat=Windows
; DisableDebugger
; EOF

Antwort unter www.purearea.net gefunden

Verfasst: 25.02.2005 16:22
von raynay
Anbei der Code zur Abfrage. Nach einigem Probieren ging es dann....


; Autor: Logan5
; Datum: 30.11.02
; Forum: Deutsches Forum
; Quelle www.pureaera.net
; Link http://www.purearea.net/pb/german/index.htm
; Link des Programms http://www.purearea.net/pb/CodeArchiv/D ... atabase.pb


;Autor logan5, 30. Nov 2002

If InitDatabase()

result = OpenDatabase(0,"Kasam Datenbank","maier","bravo")



;--------------------------------------------------------------------------------------
; Was InitDatabase() bedeutet am besten in der hilfe nachschauen
; result wird nur abgefragt um festzustellen ob die Datenbank geöffnet werden kann
;
; OpenDatabase(#Database, ODBCDatabaseName$, User$, Password$)
;
; #Database ist einfach eine nummer die man festlegt
; ODBCDatabaseName$ jetzt wird's schwieriger, hier nicht die datenbank datei eintragen
; sondern, den namen den ihr im odbc treiber für die datenbank vergeben habt
; zu finden in einstellungen systemsteuerung odbc datenquelle system dsn
; User$ und Password$ falls die access datei mit einem username und password
; gesichert ist hier angeben, falls nicht ist völlig egal was hier steht
;--------------------------------------------------------------------------------------

If result > 0
MessageRequester("Kasam Datenbank", "Kasam Datenbank ist offen",#PB_MessageRequester_Ok )
EndIf

;--------------------------------------------------------------------------------------
; Hier wird nur noch einmal ausgegeben, das die datenbank offen ist
;--------------------------------------------------------------------------------------


Abfrage$="Select * from stratab"

;--------------------------------------------------------------------------------------
; Hier wird die abfrage für die datenbank formuliert diese braucht man später
; für DatabaseQuery(Abfrage$)
; wenn ich den befehl richtig verstanden hab bedeutet er wähle (select) alles (*)
; aus (from) der Tabelle stratab aus
; stratab ist eine Tabelle aus der Access datei die ich abfragen will
;--------------------------------------------------------------------------------------



OpenConsole()

;--------------------------------------------------------------------------------------
; in meinem beispiel möchte ich den dateninhalt einfach nur ausgeben, also
; öffne ich hier eine console. genauso gut könnte man sie an ein array übergeben oder
; nach bestimmten sätzen suchen
;--------------------------------------------------------------------------------------


If DatabaseQuery(Abfrage$)

;--------------------------------------------------------------------------------------
; die erklärung für DatabaseQuery am besten in der hilfe nachschlagen
;--------------------------------------------------------------------------------------



While NextDatabaseRow()

;--------------------------------------------------------------------------------------
; hier beginnt die abfrage meiner tabelle stratab (ist übrigens die abkürzung für
; strassennamen tabelle)
; die tabelle beeinhaltet nur zwei spalten eine mit der strassen id und eine mit dem
; strassennamen
; ich muss die feldbezeichnung innerhalb der access datei gar nicht kennen, denn ich
; rufe die erste spalte mit GetDatabaseString(0), die zweite mit GetDatabaseString(1)
; usw. auf und speichere sie in freigewählten variablennamen unter purebasic mit einer
; while wend schleife durchlaufe ich die ganze datei
;--------------------------------------------------------------------------------------

ID = GetDatabaseLong(0)
Bezeichnung.s=RTrim(GetDatabaseString(1))
;--------------------------------------------------------------------------------------
; in meinen beispiel gebe ich die daten nur auf dem bildschirm aus, der rest dürfte
; klar sein
;--------------------------------------------------------------------------------------


Print (Str(ID))
Print(" ")
PrintN (Bezeichnung.s)

Wend


Else
MessageRequester("Fehler","ODCB Umgebung nicht vorhanden",#MB_ICONERROR)
End
EndIf

CloseDatabase(0)

CloseConsole()

EndIf
; ExecutableFormat=Windows
; DisableDebugger
; EOF