Seite 1 von 1

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

Verfasst: 29.04.2007 18:17
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

Verfasst: 30.04.2007 13:49
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.

Verfasst: 30.04.2007 14:29
von mk-soft
Erzeugung von eigenen Interface. Kleines Beispiel

http://www.purebasic.fr/german/viewtopi ... highlight=

Verfasst: 30.04.2007 23:08
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