easyDB-lib

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Maurizio555
Beiträge: 53
Registriert: 03.10.2004 10:00
Wohnort: BW

easyDB-lib

Beitrag von Maurizio555 »

Hallo!
Ich habe eine Frage zur easyDB-lib.
Wenn ich eine DB erzeuge, gleich danach ein paar Records schreibe, dann funktioniert alles einwandfrei.
Wenn ich nach dem Erzeugen die DB schliesse, sie danach wieder öffne, die Records schreibe und wieder schliesse, dann wird nichts reingeschieben!
Siehe Beispiele unten.
Dateiname, name und pass stimmen!
Auch edbUse(0) hilft nichts.
Hatte schon jemand das Problem?
Weiß jemand an was es liegen könnte?

So funktioniert es:

edbCreateNulldb(FileName.s, name.s, pass.s)
edbOpen(0, FileName, name.s, pass.s)
edbCreateAddField("NAME, C, 20, 0")
edbAppend()
edbPut ("NAME", Name.s)
edbWriteRecord(0)
edbClose(0)


So funktioniert es nicht:

edbCreateNulldb(FileName.s, name.s, pass.s)
edbOpen(0, FileName, name.s, pass.s)
edbCreateAddField("NAME, C, 20, 0")
edbClose(0)
;
edbOpen(0, FileName, name.s, pass.s)
edbAppend()
edbPut ("NAME", Name.s)
edbWriteRecord(0)
edbClose(0)
Mit fernem Wasser läßt sich nicht ein nahes Feuer löschen.
Tsue Hung (525 n.Chr.).
Benutzeravatar
Maurizio555
Beiträge: 53
Registriert: 03.10.2004 10:00
Wohnort: BW

edbGetInfo

Beitrag von Maurizio555 »

Hallo!
Hat sich erledigt, der Fehler lag doch woanders :cry:
Hab' aber trotzdem noch 'ne Frage <) über edbGetInfo:
$dbFName soll den Namen eines Feldes zurückgeben.
Die Hilfe zur lib sagt:
$dbFName , Feld vom Feld "Feld" wird der Feld-Name zurückgegeben.
Kann das jemand auf Deutsch übersetzen? :lol:
Was soll ich an edbGetInfo übergeben?
edbGetInfo("$dbFName , 1", *smem) sollte doch den Namen des Feldes 1
zurückgeben? Funzt aber nicht. Wenn ich statt der Feldnummer den Feldnamen übergebe, dann kenne ich den Namen bereits und brauche die Funktion nicht mehr.
Verstehe ich nicht :cry:
Mit fernem Wasser läßt sich nicht ein nahes Feuer löschen.
Tsue Hung (525 n.Chr.).
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Beitrag von nicolaus »

Also ich nehm mal an du verwendest die lib für PB und nich die dll und wenn du dir da die hilfe anschaust steht da das drin:
edbGetInfo ( n1 , n2 ) n1 = char; Zeiger auf einem String Datenbank-Variable auslesen

n2 = char; Zeiger auf einem Speicherbereich,, wo die, Informationen hinterlegt werden

Die Internen System-Variablen über die Datenbank werden ausgelesen und in N2 zurückgegeben. N1 gibt die Variable an:

&dbRecCount Anzahl der Datensätze in der aktuellen DB

&dbFCount Anzahl der Felder in ein Datensatz

&dbMemo Besitzt der Datensatz ein Memo, so ist N2 eins, sonst NULL

$dbFName , Feld vom Feld "Feld" wird der Feld-Name zurückgegeben

$dbFType , Feld vom Feld "Feld" wird der Typ des Feldes zurückgegeben

&dbFLen , Feld vom Feld "Feld" wird die Länge des Feldes zurückgegeben.
das heist also das du das so machen kannst:

Code: Alles auswählen

mem = AllocateMemory(16)
edbGetInfo("&dbRecCount",*mem)
return_value.s = PeekS(*mem)
In dem Beispiel oben hast du dann in der variable return_value drin stehen was dir edbGetInfo() zurück gibt (hier halt die anzahll der records in der db)
Du mußt halt einfach die Strings die in der hilfe auch stehen wie z.b. &dbRecCount als string bei n1 übergeben also "&dbRecCount".

Hoffe das hat dir geholfen.

MfG Nico
Benutzeravatar
Maurizio555
Beiträge: 53
Registriert: 03.10.2004 10:00
Wohnort: BW

Beitrag von Maurizio555 »

Hallo!
Ja, das war mir schon klar. Nur: in der Hilfe steht '$dbFName , Feld'.
Ich habe jetzt die Leerzeichen vor und nach dem Komma gelöscht und jetzt funktionierts!!! :allright:
Mit fernem Wasser läßt sich nicht ein nahes Feuer löschen.
Tsue Hung (525 n.Chr.).
Antworten