Ich habe 5 Programme ( in PureBasic 4.0 ) geschrieben die dieses Thema behandeln ==> In einer Textdatenbank Werte eingeben und danach bearbeiten. Und dieses will ich der Allgemeinheit hier zur Verfügung stellen.
Die Programme sind natürlich nur der "rohe" Aufbau - ohne den jeweiligen Sicherheitsabfragen wie: Ob das Fenster auch wirklich geöffnet werden konnte; ob die Datei auch wirklich geöffnet werden konnte etc.
An die Moderatoren: Ich dachte eben ich stelle es hier rein. Wenn ihr meint, das das Thema woanderst besser aufgehoben wäre, könnt Ihr es ruhig verschieben.
Hier der erste Teil: Dateneingabe
Code: Alles auswählen
;Dateneingabe
;In einem Eingabe-Gadget werden für einen neuen Datensatz die Felder eingegeben und in der Datenbank am
;Schluß von den schon vorhandenen Datensätzen angehängt.
;PureBasic 4.0
If OpenWindow(0,216,0,500,300,"Termineingabefenster",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(0))
TextGadget(1, 20, 20, 150, 20, "Dateneingabefenster")
TextGadget(2, 20, 60, 40, 20, "Datum")
StringGadget(3, 80, 60, 60, 20, "")
TextGadget(4, 20, 100, 50, 20, "Terminart")
StringGadget(5, 80, 100, 100, 20, "")
TextGadget(6, 20, 140, 60, 20, "Name")
StringGadget(7, 80, 140, 150, 20, "")
ButtonGadget(8, 60, 200, 100, 30, "Daten hinzufügen")
ButtonGadget(9, 200, 200, 100, 30, "Beenden")
TextGadget(10, 150, 60, 380, 20, "Nur die ersten 10 Zeichen werden übernommen")
TextGadget(11, 190, 100, 380, 20, "Nur die ersten 15 Zeichen werden übernommen")
TextGadget(12, 240, 140, 380, 20, "Nur die ersten 25 Zeichen werden übernommen")
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
If EventID = #PB_Event_Gadget
If EventGadget()=8
text1s.s = GetGadgetText(3) ;auslesen vom Stringgadget
ergebnis1s.s = LSet(text1s.s, 10) ;auffüllen/begrenzen des Stringgadget auf 10 Zeichen
text2s.s = GetGadgetText(5)
ergebnis2s.s = LSet(text2s.s, 15)
text3s.s = GetGadgetText(7)
ergebnis3s.s = LSet(text3s.s, 25)
textgesamts.s = ergebnis1s.s+ergebnis2s.s+ergebnis3s.s ;zusammenlegen von den Feldern ( Gesamttext )
If OpenFile(1,"versuch.txt")
laengel.l= Lof(1) ; ermitteln der Dateilaenge
FileSeek(1,laengel.l) ; setzt den Zeiger ans Dateiende
WriteStringN(1,textgesamts.s) ;schreibt den Gesamttext an das Ende von der Datei
CloseFile(1) ;schließt die Datei
EndIf
SetGadgetText(3, "") ;Eingabefelder werden gelöscht nachdem der
SetGadgetText(5, "") ;"Daten hinzufügen" BUTTON gedrückt wurde
SetGadgetText(7, "")
EndIf
If EventGadget()=9
Quit = 1
EndIf
EndIf
Until Quit=1
EndIf
End
Code: Alles auswählen
;Datenausgabe komplett
;In einem ListIconGadget werden alle in der Datenbank vorhandene Datensätze aufgelistet
;PureBasic 4.0
If OpenWindow(0, 100, 100, 355, 200, "Datenausgabe", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
ListIconGadget(0, 5, 5, 345, 190, "Datum", 80,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(0, 1, "Terminart", 90)
AddGadgetColumn(0, 2, "Name", 150)
If ReadFile(1,"versuch.txt")
laengel.l= Lof(1)
zeilenanzahlw.w=laengel.l/52
For iw.w=0 To zeilenanzahlw.w
FileSeek(1,iw.w*52)
wert2s.s=ReadString(1)
datums.s=Left(wert2s.s,10)
vornames.s=Mid(wert2s.s,11, 15)
nachnames.s=Mid(wert2s.s,26, 25)
AddGadgetItem(0, -1,datums.s+Chr(10)+vornames.s+Chr(10)+nachnames.s)
Next iw.w
CloseFile(1)
EndIf
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
EndIf
Code: Alles auswählen
;"Datenänderung"
;In diesem Abschnitt werden die ganzen Datenensätze von einer Datenbank in einem ListIconGadget aufgelistet.
;Danach wird durch Auswählen von einem Datensatz (markieren) der Datensatz in einem Eingabe-Gadget, wie
;bei der Dateneingabe, angezeigt. Darin können dann in den gewünschten Datenfeldern die Änderungen
;vorgenommen werden und der Datensatz wird danach wieder an der gleichen Stelle von der Datenbank
;abgespeichert.
;PureBasic 4.0
If OpenWindow(0, 100, 100, 355, 275, "Datenänderung", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
ListIconGadget(0, 5, 35, 345, 200, "Datum", 80,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(0, 1, "Terminart", 90)
AddGadgetColumn(0, 2, "Name", 150)
TextGadget(1, 5, 10, 250, 20, "Bitte den Datensatz markieren")
ButtonGadget(2, 5, 245, 70, 20, "Weiter")
If ReadFile(1,"versuch.txt")
laengel.l= Lof(1)
zeilenanzahlw.w=laengel.l/52
For iw.w=0 To zeilenanzahlw.w
FileSeek(1,iw.w*52)
wert2s.s=ReadString(1)
datums.s=Left(wert2s.s,10)
vornames.s=Mid(wert2s.s,11, 15)
nachnames.s=Mid(wert2s.s,26, 25)
AddGadgetItem(0, -1,datums.s+Chr(10)+vornames.s+Chr(10)+nachnames.s)
;Debug "Datum: "+datums.s+" Vorname: "+vornames.s+" Nachname: "+nachnames.s
Next iw.w
CloseFile(1)
EndIf
EndIf
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
If EventID = #PB_Event_Gadget
If EventGadget()=2
wertw.w = GetGadgetState(0)
ergebniss.s = Str(wertw.w)
;Debug ergebniss.s
;Debug EventGadget()
CloseWindow(0)
If OpenWindow(1,216,0,500,300,"Datenänderungsfenster",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered )
If CreateGadgetList(WindowID(1))
TextGadget(3, 20, 20, 150, 20, "Datenänderungsfenster")
TextGadget(4, 20, 60, 40, 20, "Datum")
StringGadget(5, 80, 60, 60, 20, "")
TextGadget(6, 20, 100, 50, 20, "Terminart")
StringGadget(7, 80, 100, 100, 20, "")
TextGadget(8, 20, 140, 60, 20, "Name")
StringGadget(9, 80, 140, 150, 20, "")
ButtonGadget(10, 20, 200, 160, 30, "Geänderte Daten abspeichern")
ButtonGadget(11, 200, 200, 100, 30, "Abrechen")
TextGadget(12, 150, 60, 380, 20, "Nur die ersten 10 Zeichen werden übernommen")
TextGadget(13, 190, 100, 380, 20, "Nur die ersten 15 Zeichen werden übernommen")
TextGadget(14, 240, 140, 380, 20, "Nur die ersten 25 Zeichen werden übernommen")
EndIf
EndIf
If ReadFile(1,"versuch.txt")
FileSeek(1,wertw.w*52)
wert2s.s=ReadString(1)
datums.s=Left(wert2s.s,10)
vornames.s=Mid(wert2s.s,11, 15)
nachnames.s=Mid(wert2s.s,26, 25)
SetGadgetText(5, datums.s)
SetGadgetText(7, vornames.s)
SetGadgetText(9, nachnames.s)
CloseFile(1)
EndIf
;Debug EventGadget()
;Debug "Datum: "+datums.s+" Vorname: "+vornames.s+" Nachname: "+nachnames.s
EndIf
;Debug EventGadget()
If EventGadget()=10
text1s.s = GetGadgetText(5) ;auslesen vom Stringgadget
ergebnis1s.s = LSet(text1s.s, 10) ;auffüllen/begrenzen des Stringgadget auf 10 Zeichen
text2s.s = GetGadgetText(7)
ergebnis2s.s = LSet(text2s.s, 15)
text3s.s = GetGadgetText(9)
ergebnis3s.s = LSet(text3s.s, 25)
textgesamts.s = ergebnis1s.s+ergebnis2s.s+ergebnis3s.s ;zusammenlegen von den Feldern ( Gesamttext )
If OpenFile(1,"versuch.txt")
FileSeek(1,wertw.w*52) ; setzt den Zeiger an die Adresse
WriteStringN(1,textgesamts.s) ;schreibt den Gesamttext in die Adresse von der Datei
CloseFile(1) ;schließt die Datei
EndIf
Quit=1
EndIf
EndIf
If EventGadget()=11
Quit=1
EndIf
Until Quit=1
End
Code: Alles auswählen
;"Terminausgabe - Ausgabe nach Suchanforderung"
;In dem Beispielprogramm geht es um eine Datenbank, wo "Terminarten" ( Geburtstag oder andere Termine )
;mit dem Datum und Namen abgespeichert werden. Danach werden die Daten von der Datenbank Satz für Satz
;mit dem heutigen Datum verglichen (Monat und Tag) und bei Übereinstimmung in einem ListIconGadget
;aufgelistet. Es kann natürlich auch nach anderen "Suchmerkmalen" ausgesondert werden, es soll nur
;der Weg beschrieben werden, wie man das Problem angeht.
;PureBasic 4.0
If OpenWindow(0, 100, 100, 355, 200, "Terminausgabe", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget |#PB_Window_TitleBar| #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
ListIconGadget(0, 5, 5, 345, 190, "Datum", 80,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(0, 1, "Terminart", 90)
AddGadgetColumn(0, 2, "Name", 150)
If ReadFile(1,"versuch.txt")
laengel.l= Lof(1)
zeilenanzahlw.w=laengel.l/52
tags.s=FormatDate("%dd",Date())
monats.s=FormatDate("%mm",Date())
jahrs.s=FormatDate("%yyyy",Date())
For iw.w=0 To zeilenanzahlw.w
FileSeek(1,iw.w*52)
wert2s.s=ReadString(1)
datums.s=Left(wert2s.s,10)
vornames.s=Mid(wert2s.s,11, 15)
nachnames.s=Mid(wert2s.s,26, 25)
tagdateis.s=Left(datums.s,2)
monatdateis.s=Mid(datums.s,4,2)
If monatdateis.s=monats.s And tagdateis.s=tags.s
AddGadgetItem(0, -1,datums.s+Chr(10)+vornames.s+Chr(10)+nachnames.s)
EndIf
Next iw.w
CloseFile(1)
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
EndIf
Code: Alles auswählen
;Daten löschen
;Der zu löschende Datensatz wird im ListIconGadget markiert und durch "------" aufgefüllt.
;Danach wird die Datei Satz für Satz in eine neue "Kopiedatei" kopiert, mit Ausnahme von dem "------ Satz".
;Wenn dies fertig ist, wird die alte Datei gelöscht und die "Kopiedatei" wird umbenannt in den ursprünglichen
;Dateinamen. Danach können durch Neustart andere Datensätze gelöscht werden.
;PureBasic 4.0
If OpenWindow(0, 100, 100, 355, 275, "Datenlöschung", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
ListIconGadget(0, 5, 35, 345, 200, "Datum", 80,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(0, 1, "Terminart", 90)
AddGadgetColumn(0, 2, "Name", 150)
TextGadget(1, 5, 10, 250, 20, "Bitte den Datensatz markieren")
ButtonGadget(2, 5, 245, 70, 20, "Weiter")
If ReadFile(1,"versuch.txt")
laengel.l= Lof(1)
zeilenanzahlw.w=laengel.l/52
For iw.w=0 To zeilenanzahlw.w
FileSeek(1,iw.w*52)
wert2s.s=ReadString(1)
datums.s=Left(wert2s.s,10)
vornames.s=Mid(wert2s.s,11, 15)
nachnames.s=Mid(wert2s.s,26, 25)
AddGadgetItem(0, -1,datums.s+Chr(10)+vornames.s+Chr(10)+nachnames.s)
Next iw.w
CloseFile(1)
EndIf
EndIf
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
If EventID = #PB_Event_Gadget
If EventGadget()=2
wertw.w = GetGadgetState(0)
ergebniss.s = Str(wertw.w)
CloseWindow(0)
If OpenWindow(1,216,0,380,250,"Datenlöschungsfenster",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered )
If CreateGadgetList(WindowID(1))
TextGadget(3, 20, 20, 150, 20, "Datenlöschungsfenster")
TextGadget(4, 20, 60, 40, 20, "Datum")
StringGadget(5, 80, 60, 60, 20, "")
TextGadget(6, 20, 100, 50, 20, "Terminart")
StringGadget(7, 80, 100, 100, 20, "")
TextGadget(8, 20, 140, 60, 20, "Name")
StringGadget(9, 80, 140, 150, 20, "")
ButtonGadget(10, 20, 180, 230, 30, "Daten löschen ( sind sie wirklich sicher?)")
ButtonGadget(11, 270, 180, 100, 30, "Abbrechen")
EndIf
EndIf
If ReadFile(1,"versuch.txt")
FileSeek(1,wertw.w*52)
wert2s.s=ReadString(1)
datums.s=Left(wert2s.s,10)
vornames.s=Mid(wert2s.s,11, 15)
nachnames.s=Mid(wert2s.s,26, 25)
SetGadgetText(5, datums.s)
SetGadgetText(7, vornames.s)
SetGadgetText(9, nachnames.s)
CloseFile(1)
EndIf
EndIf
If EventGadget()=10
loeschs.s = LSet("-", 50,"-")
If OpenFile(1,"versuch.txt")
FileSeek(1,wertw.w*52)
WriteStringN(1,loeschs.s)
CloseFile(1)
EndIf
If OpenFile(2,"versuchkopie.txt")
EndIf
If ReadFile(1,"versuch.txt")
laengefile1l.l= Lof(1)
zeilenanzahlfile1w.w=laengefile1l.l/52
For iw.w=0 To zeilenanzahlfile1w.w
FileSeek(1,iw.w*52)
textgesamtfile1s.s=ReadString(1)
If textgesamtfile1s.s<>loeschs.s
laengefile2l.l= Lof(2)
FileSeek(1,laengefile2l.l)
WriteStringN(2,textgesamtfile1s.s)
EndIf
Next iw.w
CloseFile(1)
CloseFile(2)
EndIf
DeleteFile("versuch.txt")
RenameFile("versuchkopie.txt", "versuch.txt")
Quit=1
EndIf
EndIf
If EventGadget()=11
Quit=1
EndIf
Until Quit=1
End