| |
|
|
| dbHelper.pcu
Diese Unit ist für >= XProfan 10 Namensräume werden unterstützt (z.B: db.) und sollten verwendet werden!
Die Hauptaufgabe dieser Unit ist das erstellen und entfernen einer DSN um OnTheFly per ODBC auf Datenbanken zugreifen zu können, ohne diese durch den Benutzer einrichten zu lassen.
Desweiteren ist es möglich eine leere Access-Datenbank zu erstellen, um diese weiter zu nutzen (DSN wird automatisch angelegt)
Beispiele und weitere Funktionen werden folgen!
Ein paar Standard-Driver Namen befinden sich in der dbHelper.ph
Funktionsbeschreibung: (nehme db. als Namensraum in der Beschreibung) Eckige Klammern kennzeichnen optionale Parameter Defaultwerte: User$ = Passwort$ = Driver$ = Microsoft Access Driver (*.mdb)
DSN$ = db.AddDSN(DataBaseName$, [User$, [Passwort$, [Driver$]]]) Fügt einen DSN-Eintrag in den Benutzerdatenquellen ein DSN$ ist im Fehlerfalle ein Leerstring, ansonsten kann dieser String für weitere Befehle der XProfan ODBC-Schnittstelle verwendet werden!
Result% = db.RemoveDSN(DSN$, [Driver$]) Entfernt DSN-Eintrag aus den Benutzerdatenquellen Result% ist 1 im erfolgsfalle, ansonsten 0
DSN$ = db.CreateMDB(DataBaseName$, [User$, [Passwort$]]) Erstellt eine leere Acces-Datenbank und fügt einen DSN-Eintrag hinzu
PS: Die DSN-Namen werden erstellt aus XPRF + Datenbankname ohne Pfad und Extension
Feedback, Bugmeldungen usw. erwünscht
Wenn der eine oder andere noch ein paar Beispiele erstellen würde, wäre sehr nett |
|
|
| |
|
|
|
| Hab das Beispiel aus der Hilfe von S. Schnell mal ergänzt um Erstellung der Datenbank (Beispiel1.mdb), sowie Anzeige. DSN wird on the fly erstellt und gelöscht KompilierenMarkierenSeparieren### hinzugefügt
$U dbHelper.pcu = db.
Declare DSN$
DSN$ = db.CreateMDB(Beispiel1.mdb)
If DSN$ = : End : EndIf
### ende
-Begin-----------------------------------------------------------------
-VariablesDeclaration------------------------------------------------
Declare hDb&
Declare MemoFeld$
-Main----------------------------------------------------------------
### geändert
hDb& = @SQLInit(DSN=Microsoft Access-Datenbank)
hDb& = @SQLInit(DSN= + DSN$)
### ende
If hDb&
-Tabelle erzeugen------------------------------------------------
-
- AUTOINCREMENT = Autowert
- CHAR = Text
- CURRENCY = Waehrung
- DATE = Datum/Uhrzeit
- FLOAT = Double
- INT = Long Integer
- MEMO = Memory
- NUMBER = Double
-
-----------------------------------------------------------------
SQLExec CREATE TABLE test1 (Nummer AUTOINCREMENT, +
Name CHAR(50) PRIMARY KEY, +
Vorname CHAR(30), +
GebDatum DATE, +
Groesse INT, +
Gehalt CURRENCY, +
Faktor FLOAT, +
Bemerkung MEMO);, 0
-Einen Datensatz anlegen-----------------------------------------
MemoFeld$ = Dies ist ein Memo-Feld in dem eine Menge Text +
gespeichert werden kann und das fast keine +
Grenzen kennt.
SQLExec INSERT INTO test1 (Name, Vorname, GebDatum, +
Groesse, Gehalt, Faktor, +
Bemerkung) +
VALUES (Schnell, +
Stefan, +
#6/16/1964#, +
189, +
3141.59, +
2.473, +
:MemoFeld$);, 0
-Datensaetze anzeigen--------------------------------------------
SQLExec SELECT * FROM test1;, 1
### hinzugefügt
@ListBox$(TABLE, 2)
### ende
-Tabelle loeschen------------------------------------------------
SQLExec DROP TABLE test1;, 0
SQLDone
EndIf
### hinzugefügt
db.RemoveDSN(DSN$)
WaitKey
### ende
-End-------------------------------------------------------------------
End
|
|
|
| |
|
|
|
| Update auf Beta 0.2 Einige Syntaxänderungen, siehe erstes Posting Beispiel hinzugefügt |
|
|
| |
|
|
|
Michael Wodrich | Werds im Laufe des Tages mal testen. Kann man sich da auch nichts zerschiessen, wenn man etwas entfernt?
Nicht das da nachher wichtige Einträge fehlen... |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 01.10.2006 ▲ |
|
|
|
|
| Michael Wodrich
Werds im Laufe des Tages mal testen. Kann man sich da auch nichts zerschiessen, wenn man etwas entfernt?
Nicht das da nachher wichtige Einträge fehlen...
Entfernt nur DSN-Einträge die mit XPRF beginnen. Also sollten es nur vom Programm erstellte sein. Solltest Du jedoch eine Access DB Namens Test.mdb und eine Excel Tabelle Test.xls haben, so überschreiben die sich.
Man sollte also beim Programstart DSN erzeugen und am Ende endfernen, dürfte dann nichts passieren, solange man nicht mit gleichnamigen Datenbanken paralell arbeitet, mit dieser PCU!
DSN-Einträge sind im allgemeinen nicht wichtig, kann man jederzeit in der Systemsteuerung neu anlegen. (Nur Benutzerquellen werden benutzt, keine System-DNS usw.!)
Wäre schön, wenn Du mal testest |
|
|
| |
|
|
|
| Update auf Beta 0.3
PCU größe optimiert (70%) und Geschwindigkeit gesteigert |
|
|
| |
|
|
|
Michael Wodrich | Zugriff auf Access klappt, aber wie bekomme ich Zugriff auf eine MySQL-Datei? |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 01.10.2006 ▲ |
|
|
|
|
| [quote:817fe34677=Michael Wodrich]Zugriff auf Access klappt, aber wie bekomme ich Zugriff auf eine MySQL-Datei?[/quote:817fe34677] MyODBC muß installiert sein, als Adresse dann z.B. den localhost angeben. (127.0.0.1) und Driver = MySQL ODBC 3.51 Driver Habs aber noch nicht getestet, sollte aber gehen, wenn MySQL lokal läuft |
|
|
| |
|
|
|
| Update Beta 0.5
Alle 3 Funktion haben jetzt einen zusätzlichen optionalen Parameter. Wenn dieser auf 1 gesetzt ist, wird der DSN-Eintrag in den Systemdatenquellen erstellt, bzw. gelöscht. Dort haben auch andere Nutzer des Systems zugriff auf die DB
PS: Wer ein paar nette Beispiele posten könnte, der erhält von mir per PM den Source, der aber nicht weitergegeben werden darf. Also haut rein |
|
|
| |
|
|
|
Michael Wodrich | XAMPP hat den MyODBC wohl nicht gebraucht. Der Treiber ist bei mir garnicht installiert, hole ich gerade nach.
Weiß jemand wo bei XP Home die hosts. und lmhosts. genau hingehören damit sie korrekt ausgewertet werden? Ich habe auf meinem System Schwierigkeiten mit der localhost Angabe - die führt ständig ins Leere. Ich helfe mir mit 127.0.0.1.
Die Templates liegen unter WindowsSystem32Driveretc hosts.sam und lmhosts.sam.
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 04.10.2006 ▲ |
|
|
|
|
| Nach System32/Drivers/etc Nur umbenennen, also extension weg
MySQL geht auch ohne ODBC, indem man die DLL libmysql.dll direkt verwendet. Aber für ODBC ist MyODBC erforderlich! |
|
|
| |
|
|
|
Michael Wodrich | Ich schaff es einfach nicht. Access-Dateien kein Problem aber MySql will nicht. Oder habe ich mit *.myd die falsche Datei am Wickel.
Da sind *.myd, *.myi, *.frm zur Auswahl. d=datenbank, i=index ?!!
Erstellt habe ich die Datenbank wie immer: mit phpMyAdmin - damit arbeite ich eigentlich nur. Aber ein Programmzugriff via XProfan wäre natürlich gut...
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 04.10.2006 ▲ |
|
|
|