Hab mich seit langer Zeit mal wieder mit PB beschäftigt und festgestellt, dass es immer noch viele fragen zur Datenbankprogrammierung mit PB gibt.
Hier mal ein Code zum ausprobieren. Ist mit PB 4.0 getestet und funktioniert bei mir einwandfrei.

Code: Alles auswählen
#ODBC_ADD_DSN = 1
#ODBC_REMOVE_DSN = 3
If InitDatabase() = 0
MessageRequester("ODBC Error", "Can't initialize the database drivers", #PB_MessageRequester_Ok)
EndIf
Procedure db_Connect(num.l, dbFile.s, dbUser.s, dbPass.s) ;dbFile = vollständiger Datenbankpfad incl. name der Accessdatei
dbName.s = GetFilePart(dbFile.s)
dbPath.s = GetPathPart(dbFile.s)
strAtt.s = "Server=MyOwnServer" + ";"
strAtt.s + "DSN=" + dbName.s + ";"
strAtt.s + "Description=" + dbName.s + ";"
strAtt.s + "DefaultDir=" + dbPath.s + ";"
strAtt.s + "DBQ=" + dbName.s + ";"
strAtt.s + "UID=" + dbUser.s + ";"
strAtt.s + "PWD=" + dbPass.s + ";"
MyMemory = AllocateMemory(Len(strAtt))
CopyMemory(@strAtt, MyMemory, Len(strAtt))
For L = 1 To Len(strAtt)
If PeekB(MyMemory + l - 1) = Asc(";")
PokeB(MyMemory + l - 1, 0)
EndIf
Next L
Result = SQLConfigDataSource_(num, #ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)", MyMemory)
FreeMemory(MyMemory)
If Result
If OpenDatabase(num, dbName.s, dbUser.s, dbPass.s) <> 0
ProcedureReturn 1
Else
MessageRequester("ODBC Error", "Can't open the database connection", #PB_MessageRequester_Ok)
ProcedureReturn 0
EndIf
Else
MessageRequester("ODBC Error", "Can't configure sql data source", #PB_MessageRequester_Ok)
ProcedureReturn -1
EndIf
EndProcedure
Procedure db_Disconnect(num.l,dbName.s) ; dbName = Name des erstellten DSN
strAtt.s + "DSN=" + dbName.s + ";"
MyMemory = AllocateMemory(Len(strAtt))
CopyMemory(@strAtt, MyMemory, Len(strAtt))
For L = 1 To Len(strAtt)
If PeekB(MyMemory + l - 1) = Asc(";")
PokeB(MyMemory + l - 1, 0)
EndIf
Next L
Result = SQLConfigDataSource_(num, #ODBC_REMOVE_DSN, "Microsoft Access Driver (*.mdb)", MyMemory)
FreeMemory(MyMemory)
EndProcedure
Code: Alles auswählen
Procedure Open_Window_1()
If OpenWindow(#Window_1, 216, 50, 800, 600, "Kunden", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
DatabaseQuery(0,"select * from kunden")
If CreateMenu(#MenuBar_1, WindowID(#Window_1))
MenuTitle("Kunde")
MenuItem(#MENU_9, "...anlegen")
MenuItem(#MENU_10, "...bearbeiten")
MenuItem(#MENU_11, "...löschen")
MenuBar()
MenuItem(#MENU_12, "Beenden")
EndIf
If CreateGadgetList(WindowID(#Window_1))
ButtonGadget(#Button_0, 655, 95, 120, 25, "Rechnungsdaten")
ButtonGadget(#Button_1, 655, 126, 120, 25, "Zusatzdaten")
ButtonGadget(#Button_3, 655, 157, 120, 25, "Pkw")
;-
ListIconGadget(#ListIcon_0, 35, 95, 600, 400, "KundenNr", 100, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
AddGadgetColumn(#ListIcon_0, 1, "Vorname", 100)
AddGadgetColumn(#ListIcon_0, 2, "Nachname", 100)
AddGadgetColumn(#ListIcon_0, 3, "Telefon", 100)
While NextDatabaseRow(0)
KundenNr.s=GetDatabaseString(0,0)
Vorname.s=GetDatabaseString(0,1)
Nachname.s=GetDatabaseString(0,2)
Telefon.s=GetDatabaseString(0,6)
AddGadgetItem(#ListIcon_0,-1,KundenNr.s+Chr(10)+Vorname+Chr(10)+Nachname+Chr(10)+Telefon)
Wend
SetGadgetItemState(#ListIcon_0,0,#PB_ListIcon_Selected)
EndIf
EndIf
EndProcedure
Code: Alles auswählen
DatabaseQuery(0,"select * from kunden where kundennr = '"+dbSelect+"'")
NextDatabaseRow(0)
KundenNr.s=GetDatabaseString(0,0)
Vorname.s=GetDatabaseString(0,1)
Nachname.s=GetDatabaseString(0,2)
Adresse.s=GetDatabaseString(0,3)
Ort.s=GetDatabaseString(0,4)
Plz.s=GetDatabaseString(0,5)
Telefon.s=GetDatabaseString(0,6)
Mobil.s=GetDatabaseString(0,7)
SetGadgetText(#String_0,KundenNr)
SetGadgetText(#String_1,Vorname)
SetGadgetText(#String_2,Nachname)
SetGadgetText(#String_3,Adresse)
SetGadgetText(#String_4,Ort)
SetGadgetText(#String_5,Plz)
SetGadgetText(#String_6,Telefon)
SetGadgetText(#String_7,Mobil)
Code: Alles auswählen
KundenNr.s=GetGadgetText(#String_0)
Vorname.s=GetGadgetText(#String_1)
Nachname.s=GetGadgetText(#String_2)
Adresse.s=GetGadgetText(#String_3)
Ort.s=GetGadgetText(#String_4)
Plz.s=GetGadgetText(#String_5)
Telefon.s=GetGadgetText(#String_6)
Mobil.s=GetGadgetText(#String_7)
DatabaseUpdate(0,"update kunden set vorname='"+vorname+"',nachname='"+nachname+"',adresse='"+adresse+"',ort='"+ort+"',plz='"+plz+"',telefon='"+telefon+"',mobil='"+mobil+"' where kundennr='"+kundennr+"'")
CloseWindow(#Window_2)
DisableWindow(#Window_1,0)
SetActiveWindow(#Window_1)
DatabaseQuery(0,"select * from kunden")
ClearGadgetItemList(#ListIcon_0)
While NextDatabaseRow(0)
KundenNr.s=GetDatabaseString(0,0)
Vorname.s=GetDatabaseString(0,1)
Nachname.s=GetDatabaseString(0,2)
Telefon.s=GetDatabaseString(0,6)
AddGadgetItem(#ListIcon_0,-1,KundenNr.s+Chr(10)+Vorname+Chr(10)+Nachname+Chr(10)+Telefon)
Wend
SetGadgetItemState(#ListIcon_0,0,#PB_ListIcon_Selected)

Mfg Mike