Datensätze anzeigen, vorwärts Blättern, rückw....

Anfängerfragen zum Programmieren mit PureBasic.
AddMe
Beiträge: 46
Registriert: 04.05.2009 23:24

Datensätze anzeigen, vorwärts Blättern, rückw....

Beitrag von AddMe »

Hallo,

ich möchte ein Fenster erstellen, das zur Datenerfassung dient.
In diesem Fenster habe ich mehrere TextGadgets, die ich beim Starten des Formulars auf den letzten Datensatz bzw. auf den neu zu erfassenden Datensatz setzen möchte.
z. B. Name, Vorname, Strasse,... (als TextGadget).

Die Daten würde ich aus einer SQlite Datenbank holen.

In Access gibt es die Möglichkeit, diese Datensätze anzuspringen: vorwärts, rückwärts, erster Datensatz, letzter Datensatz und neuer Datensatz.

Gibt es sowas auch hier in PureBasic? Habe gesucht, aber nichts gefunden.

Wenn nicht, müsste man wohl Buttons für das Blättern verwenden. Beim Blättern müsste sich der Inhalt der TextGadgets ja auch ändern.

Weis jemand, wie das geht?? Wäre toll, wenn mir jemand zeigen könnte, wie das geht.

Schon mal vielen Dank.

Gruß
Michael

P.S. Nutze noch PB 4.30
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Du beschreibst gerade genau die Eigenschaften von LinkedLists in PureBasic.

Das sind "dynamische Arrays", denen man beliebig Felder (eigentlich eher Einträge) hinzufügen und löschen kann. Du kannst beliebig vor- und zurückblättern und auch springen.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
AddMe
Beiträge: 46
Registriert: 04.05.2009 23:24

Beitrag von AddMe »

Hallo AND51,

vielen Dank für Deine Antwort.
AND51 hat geschrieben:Du beschreibst gerade genau die Eigenschaften von LinkedLists in PureBasic.
Ich habe hier im Forum ein Bild gefunden, das zeigt, was ich meine:
Bild

Es geht um die Datensatzanzeige.

Hm, also, da es sowas anscheinend nicht als Controle gibt, müsste ich also Buttons benutzen.

Also, müsste ich die Daten aus der SQlite Tabelle per SQL auslesen, diese in eine LinkedList einfügen und anschließend mit der LinkedList diese in den einzelnen TextGadgets anzeigen?

Wie mache ich es denn, wenn ich einen neuen Datensatz erfassen will?
Hab ja dann nur exitierende Daten in der LinkedList.
Wenn ich dann einen vorhandenen Datensatz ändere, dann müsste ich den geänderten Datensatz in der LinkedList nehmen und per SQL in SQLite auch ändern.

Sorry, dass ich soviele Fragen stelle. Denke nur darüber nach, wie ich das umsetzten könnte.

Liege ich den schon mal ein bischen richtig??

Nochmals vielen Dank

Gruß
Michael
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

AddMe hat geschrieben:Wie mache ich es denn, wenn ich einen neuen Datensatz erfassen will?
Hab ja dann nur exitierende Daten in der LinkedList.
AddElement(LinkedList)?
Win11 x64 | PB 6.20
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Nun hört doch mal bitte auf mit euer Linklist, er benötigt keine für seine
Fragestellung.

Er benötigt sowas wie ein Data-Control, das es in PB nicht gibt, muß er also
selber programmieren. Ein paar Buttons, die z.B. ans Ende der Datenbank
springen, oder zum nächsten Datensatz. Beim Wechsel wird normallerweise
auch gleich in der DB gespeichert. Ein Button, der die Texte entleert für
neuen Datensatz, der dann beim Wechsel wieder in der DB gespeichert wird.

Linklist ist nur am Thema vorbei.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Du bist auf dem richtigen Weg.

Vor- und zurückspringen geht mit NextElement() und PreviousElement(), springen geht mit SelectElement() oder schneller mit ChangeCurrentElement().

Nachdem zum gewünschten Eintrag in der LinkedList geblättert wurde, kann er einfach ausgelesen werden:

Code: Alles auswählen

SetGadgetText(#Name, liste())
Statt für jedes Attribut (Name, Preis, Bestand, etc.) eine eigene LinkedList zu nehmen, solltest du eher auf Strukturen zurückgreifen. sie erleichtern das handling erheblich.

Normalerweise passt immer nur 1 Eintrag auf ein "Blatt" in der LinkedList: Entweder der Name, oder der Preis, oder der Bestand, etc. Strukturen ermöglichen es aber, mehrere Einträge auf ein solches Blatt zu schreiben.
Somit blätterst du nicht durch mehrere Listen, sondern hast eine Liste für alle Eigenschaften.

Hinzufügen zur Liste kannst du einen Eintrag mit AddElement() (wird an letzter Stelle eingefügt) oder InsertElement() (fügt ein Element auch irgendwo innerhalb der Liste ein).


// Edit
Oh, TS hab deinen Post nicht gesehen, haben wohl parallel geschrieben.
Also ich würde es per LinkedList machen und kenne keine anfängerfreundlicherere Alternative. Sollte deine Methode jedoch geeigneter sein, dann, bitte, übernimm du das hier. Aber dann komplett und nicht nur ein Stichwort.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Es geht um eine Datenbank: SQL und nicht linklist!
Oder soll er den Inhalt der Datenbank erst in eine Linklist packen :freak:

Ein Data-Control möchte er nachstellen, das sollte wohl jeder kennen, gibts
in VB, Delphi und Co als fertiges Control.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag von jojo1541 »

ts-soft hat geschrieben: Ein Data-Control möchte er nachstellen, das sollte wohl jeder kennen, gibts
in VB, Delphi und Co als fertiges Control.
Also in PB nicht.
Und das soll er sich als Anfänger grad mal so schnell hinprogrammieren? /:->
Ein paar Codebeispiele oder Denkansätze wären nicht schlecht für ihn.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

Ich denke eine GUI wird er sich selbst zusammenbasteln können, es fehlt
bloß die Funktionalität, im Bereich Datenbanken kenne ich mich aber nicht
aus, und LinkedLists sind unerwünscht.
Win11 x64 | PB 6.20
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Denkansätze sind in meinem ersten Thread. NextDatabaserow und
Firstdatabaserow mit einem Button verknüpfen und Texte aktualisieren kann
man alles der Hilfe entnehmen. Beispiel wäre in diesem Fall zu komplex, da
muß er wohl selber ran.

Also, Datenbank planen und erstellen, GUI planen und erstellen und dann
den Code schreiben geht dann fast von alleine.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten