Seite 1 von 1

Probleme mit Datenbank Tutorial und PB4?

Verfasst: 19.06.2008 13:39
von ne555
Meine Mutimeter Visualisierung nimmt so langsam Form an.
Mein neues Teilgebiet ist die Speicherung der Messdaten in eine Datenbank.
Als Daten sollen die X und Y Koordinaten und ein Zeit-Stempel in eine Datenbank gespeichert werden.

Zum besseren Verständnis der Thematik habe ich mir unten stehendes Tutorial angesehen.
PureBasicDB.pdf
Karls Kurzeinführung zur MDB_Lib und SQLite unter PureBasic
Datenbank-Entwicklung mit PureBasic

Das Tutorial basiert auf Paul Leischows MDB_Lib

Nun komme ich mit dem SourceCode nicht klar.
Ich habe es schon öfter gehabt das Toutorials für ältere PB-Versionen geschrieben wurden, aber den Code konnte ich mit der PB-Hilfe meist aktualisieren und zum Laufen bringen.

So beginnt es auch mit diesen Beispielen.
Bei der Deklaration im Code

Code: Alles auswählen

DefType.s sql, zwName, zwGroesse, name
DefType.l handle, id
DefType.b i
DefType.f gross
kommt schon die Fehlermeldung
"Garbage to the end of the line"
Finde ich irgendwo eine Beschreibung der Fehlermeldungen ?
In der Hilfe habe ich nichts gesehen.

Ich habe erst mal die Variablen ohne DefType deklariert und kam promt zur nächsten Fehlermeldung.
Bei dem Code

Code: Alles auswählen

If InitDatabase()
meckert der Compiler
"InitDatabase() is not a function, arry, macro or linked list"

Liegt das jetzt daran das die Userlib nicht gefunden wird?
Beim Download-Link unter Pure Area.net steht das die Lib für PB 3.xxx ist.
Bedeutet das, dass die nur mit Version 3.xx läuft oder nur das es mit 4.x nicht getestet ist?
Könnte ja sein das der Link schon älter ist und es damals die Version 4 noch nicht gab.

Könnt ihr mir vielleicht noch andere Tutorials zeigen, die sich mit dem Thema Datenbanken beschäftigen?
Ein Tipp wie ihr das angehen würdet, wenn ihr die drei Werte speichern wolltet, wäre auch toll.

viele Grüße ne555

Re: Probleme mit Datenbank Tutorial und PB4?

Verfasst: 19.06.2008 14:01
von Kiffi
Auf die Kürze:

* DefType ersetzen durch Define (oder innerhalb von
Procedures: Protected)

* InitDatabase ersetzen durch UseODBCDatabase() oder
UseSQLiteDatabase() (je nachdem, was Du letztendlich verwenden willst)

Ansonsten gibt es eigentlich keinen Grund, die olle Lib von Paul zu verwenden,
weil alles, was diese Lib bietet auch von MK-Softs Include angeboten wird.

Grüße ... Kiffi

Verfasst: 20.06.2008 09:57
von ne555
Danke für den Tipp "....was diese Lib bietet auch von MK-Softs Include angeboten wird."
Die Code-Beispiele sind sehr übersichtlich und verständlich.

"Ansonsten gibt es eigentlich keinen Grund, die olle Lib von Paul zu verwenden,"

Das wollte ich auch gar nicht. Mit Datenbank-Programmierung habe ich mich noch gar nicht beschäftigt, ich habe lediglich eine Weiterbildung "Expert Access" bei der VHS gemacht. Wenn ich ganz blauäugig an das Thema heranginge, würde ich einfach in ein Textfile meine drei Variablen speichern + evtl. einen Wert, der mir den Status der Speicherung anzeigt (abgeschlossen, abgebrochen oder ähnlich). Wie man das in einem richtigen Datenbank-Format speichert bzw. dieses handelt, davon habe ich keine Ahnung. Deshalb suche ich nach einem schönen Beispiel in einem Tutorial und da war das oben angesprochene das erste über das ich gestolpert bin ;-).

Die Hilfe finde ich in diesem Fall als wenig hilfreich.
Bitte nicht falsch verstehen, ich mag die PB-Hilfe :allright: . Die ist wirklich gut gemacht. Da habe ich schon deutlich schlechteres gesehen und das von Produkten die im professionellen Sektor angesiedelt sind und deren Anschaffungskosten ohne Support die 1 Kilo Euro Grenze deutlich überschreiten.

Aber zurück zu meinen Fragen
"Finde ich irgendwo eine Beschreibung der Fehlermeldungen ?"
gibt's da was ?

"InitDatabase ersetzen durch UseODBCDatabase() oder
UseSQLiteDatabase() (je nachdem, was Du letztendlich verwenden willst)"

warum funktioniert der oben angesprochene Code nicht?
Sind die Befehle (Klassen) wie InitDatabase nicht in der Lib vom Paule definiert?
Oder sind das einfach veraltete Klassen der PB 3.X Versionen, die durch aktuellere wie UseODBC... in PB4 abgelöst wurden?

Grüße ne555


ps
Ich mache gerade eine Vertretung im Telefon-Support und habe über Tag ein wenig Zeit mich mit PB zu beschäftigen. Leider habe ich während dieser Zeit keinen Zugang zum Internet und bin daher auf die Hilfe von PB und auf herunter geladene Tutorials beschränkt. Ich bitte daher um Nachsicht, wenn meine Fragen auch durch ein wenig mehr Recherche im Forum zu beantworten wären. Ich tippe meine Fragen in den Win- Editor ein und setze sie dann auf die schnelle ins Forum.

Verfasst: 20.06.2008 11:08
von Kiffi
ne555 hat geschrieben:"Finde ich irgendwo eine Beschreibung der Fehlermeldungen ?"
gibt's da was ?
nicht so wirklich. Eigentlich müsste die Fehlermeldung bei DefType auch
lauten: "DefType wird nicht mehr unterstützt. Bitte hierfür Define
verwenden
" (oder so). "Garbage to the end of the line" ist hier sehr irreführend.

Einen Blick wert ist die PB-Historie in der Hilfe. Dort werden die jeweiligen
Änderungen zu den Vorversionen aufgelistet. Dort hätte man auch finden
können:
- Geändert: 'DefType' umbenannt in 'Define'
Auch die Fehlerursache zu InitDatabase() kann man hier nachlesen:
- Geändert: InitDatabase() in UseODBCDatabase()
Aber: Man muss halt wissen, wo man suchen muss. PB-Hilfe und
PureBoard sind gute Einstiegspunkte.

Grüße ... Kiffi

P.S.: Bevor Du Dich jetzt großartig mit MS-Access auseinandersetzt,
solltest Du Dir mal SQLite anschauen. Das wird von PB nativ unterstützt
und hat gegenüber Access auch noch so manch andere Vorteile.

Verfasst: 20.06.2008 16:01
von edel
ne555 hat geschrieben: Wenn ich ganz blauäugig an das Thema heranginge, würde ich einfach in ein Textfile meine drei Variablen speichern + evtl. einen Wert, der mir den Status der Speicherung anzeigt (abgeschlossen, abgebrochen oder ähnlich)
Was um Himmelswillen, willst du da denn mit einer Datenbank?
Eine simple Binaerdatei reicht doch, zumal du nicht einmal Strings
speichern moechtest.

Beispiel :

Code: Alles auswählen

Structure mm
  x.l
  y.l
  t.l
EndStructure

;schreiben
var.mm
var\x = 10
var\y = 666
var\t = Date()

If CreateFile(0,"dat.dat")
  WriteData(0,@var,SizeOf(var))
  CloseFile(0)
EndIf

;einlesen
var1.mm

If ReadFile(0,"dat.dat")
  ReadData(0,@var1,SizeOf(var))
  CloseFile(0)
EndIf

Debug var1\x
Debug var1\y
Debug var1\t


Verfasst: 20.06.2008 17:47
von ne555
@Kiffi
Aber: Man muss halt wissen, wo man suchen muss. PB-Hilfe und
PureBoard sind gute Einstiegspunkte.
Das ist wohl wahr.
Wenn du wie der sprichwörtliche Ochse vorm Berg stehst, vor dir zehn Weg abgehen und Du nicht mal weist wohin du eigentlich willst (außer übern Berg), dann helfen dir Wegweiser auch nicht unbedingt weiter. Denn den mit der Aufschrift „Hier geht’s übern Berg“ gibt’s natürlich nicht.



@edel
Ja, denke ich eigentlich auch.
Ich überlege ernsthaft ob ich meine Daten nicht einfach in einer ASCII Datei speichere.
Einfach Zahlenwerte durch Komma getrennt. Das ist wahrscheinlich wenig professionell aber für den Anfang mit weniger Aufwand verbunden. An eine Datenbank habe ich gedacht, weil ich in einem weiteren Schritt (wenn meine Multimeter Visu fertig ist) auch Daten von Atmel AVR yC übertragen, speichern und anzeigen möchte. Außerdem ist die Multimeter-Visu nicht eine wirklich nutzbringende Anwendung, sondern lediglich ein Projekt mit dem ich die Sprache PureBasic kennen lernen möchte. Warum also nicht auch den Umgang mit Datenbanken? ;-)
Drauf gekommen bin ich, weil mein Multimeter eine serielle Schnittstelle hat.

Ich bin auch schon kurz davor mir dieses englischsprachige Einsteigerbuch zu kaufen. Ich lese ja nur positives darüber. Ist da evtl. für die nächste Zeit eine Übersetzung geplant?

Schade das sämtliche Informationen zu SQLite und so manch Anderem nur in englisch zur Verfügung stehen. Das ist für mich als ungeübten Fremdsprachler und Neuling in der jeweiligen Thematik dann doppelt anstrengend. Aber was solls, wat mut dat mut.

Falls jemand deutschsprachige Informationen dazu kennt , findet er in mir einen dankbaren Abnehmer.

danke für die Tipps
ein schönes Wochenende

ne555