Wie Kann ich sauber eine DB-Datei Laden bei der DB von NTQ

Anfängerfragen zum Programmieren mit PureBasic.
Aspirant
Beiträge: 101
Registriert: 19.10.2006 12:19

Wie Kann ich sauber eine DB-Datei Laden bei der DB von NTQ

Beitrag von Aspirant »

Hallo,
NTQ hat die "Kleine dynamische Datenbank im Interface-Stil" geschrieben welche wie ich Denke sehr gut für Mobile zwecke geeignet ist.

nun mein Problem:
Wie Lade ich eine DB aus einer Datei?

Code: Alles auswählen

*DB.DB = DB_Create("Gleitzeit")
*DB\LoadCSV("Gleitzeit")
Mache ich es so gibt es Fehler in DB.pbi
[ERROR] DB.pbi (Line: 2649)
[ERROR] The memory pointer passed to FreeMemory() is 0.
[ERROR] DB.pbi (Line: 2650)
[ERROR] The memory pointer passed to FreeMemory() is 0.
[ERROR] DB.pbi (Line: 2651)
[ERROR] The memory pointer passed to FreeMemory() is 0.
[ERROR] DB.pbi (Line: 2652)
[ERROR] The memory pointer passed to FreeMemory() is 0.
[ERROR] DB.pbi (Line: 2653)
[ERROR] The memory pointer passed to FreeMemory() is 0.

Also mache ich es so:

Code: Alles auswählen

*DB.DB = DB_Create("Gleitzeit")
    *DB\AddCol('l', "date", 1)
    *DB\AddCol('s', "kommt", 2)
    *DB\AddCol('s', "geht", 3)
    *DB\AddCol('s', "RG", 4)
    *DB\AddCol('s', "RM", 5)
    *DB\AddCol('s', "info", 6)
    *DB\AddCol('s', "Anmerkung", 7)
    *DB\AddRow()
    *DB\LoadCSV("Gleitzeit")
So habe ich zwar keine Fehlermeldung mehr aber mit jedem neuen Lade Vorgang eine leer Zeile, was ich aber nicht will.
mit ist klar das diese Zeile schuld an meiner Leerzeile

Code: Alles auswählen

*DB\AddRow()
Nur Ohne diese Zeile habe ich den Fehler wieder in Zeile 2649.

Ich Möchte einfach nur eine Datenbank wieder Laden um mit ihr weiter zuarbeiten.
Ich danke allen die Helfen
Ich würde mich ja gerne geistig mit dir duellieren, aber wie ich sehe bist du unbewaffnet.
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

Hallo Aspirant,
irgendwie ist deine Beschreibung nicht richtig. Ich versuche sie trotzdem irgenwie zu beantworten.

1. Wenn du eine Datenbank erstellst, muß du die Befehle :
DB_Create -> AddCol -> AddRow in dieser Reihenfolge verwenden.
Damit hast du die Datenbank soweit, das du Daten eingeben kannst.
Sie liegt nur im Variablenformat vor und ist nicht physikalisch auf der Festplatte vorhanden.
Speichern mit dem Befehl: SaveCSV
Erst dann sind die Daten im Arbeitsspeicher auf der Festplatte in einer Datei gespeichert.


2. Wenn du den Befehl: -> LoadCSV verwendest, brauchst du keine weiteren Vorkehrungen zu treffen, du kannst die Daten aus der CSV-Datei direkt einlesen und bearbeiten.
Voraussetzung: Der Dateiinhalt liegt im CSV-Format vor.
Der erste Datensatz einer CSV legt die Datenstruktur der Datenbank fest,
d.h. beim Einlesen der CSV-Datei wird die Datenbank automatisch im Arbeitsspeicher erstellt und die Daten hinzugefügt.
Dieser Befehl führt also die unter "1" beschriebenen Befehle automatisch aus.

3. Dein Codekonstrukt zeigt die Punkte 1 und 2 zusammen, haben aber miteinander absolut nichts zu tun. Im schlimmsten Fall überschreiben sich beide und löschen somit evtl. Daten.

Ich hoffe, meine Beschreibung hilft dir weiter, ansonsten nachhaken.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Erzeugung von eigenen Interface. Kleines Beispiel

http://www.purebasic.fr/german/viewtopi ... highlight=
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Aspirant
Beiträge: 101
Registriert: 19.10.2006 12:19

Beitrag von Aspirant »

Hallo,
@dysti

Also dein Punkt eins ist klar.
ich habe natürlich vorher einen DB erstellt und im CVS format gespeichert

Code: Alles auswählen

*DB\SaveCSV("Gleitzeit")
den der Befehl ist ja vorhanden und Funktioniert auch.
wenn ich nur

Code: Alles auswählen

*DB\LoadCSV("Gleitzeit")
Habe folgen Fehler:
[ERROR] Invalid memory access

mit einen

Code: Alles auswählen

*DB.DB = DB_Create("Gleitzeit")
*DB\LoadCSV("Gleitzeit")
ist der Fehler und wie es dann weiter geht steht ja im ersten Posting
und so ging es immer weiter bis keine Fehlermeldung mehr kam vom Compiler

doch mein eigentliches Problem ist nach wie vor das mit jedem Lade Vorgang eine leere Zeile hinzugefügt wird die natürlich auch mit gespeichert wird was ich aber nicht will.

So wie du das beschrieben hast habe ich gehofft das es klappt was es leider nicht tut.

@mk-soft

dein Beispiel werde ich versuchen bei einen Salat zu verstehen das wird woll etwas dauern geben mir aber mühe
In eine SPS ist sowas wesendlich einfacher finde ich


Danke für eure Hielfe aber das eigentlich Problem besteht leider immer noch.

MFG Aspirant
Ich würde mich ja gerne geistig mit dir duellieren, aber wie ich sehe bist du unbewaffnet.
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
Antworten