Hallo Thorsten,
thorstenstueker hat geschrieben:Also: ich habe mit den gegebenen Beispielen einen Zugriff zur Datenbank erhalten, habe aber jetzt das Problem, dass ich nicht weiß, wie ich Feldinhalte mit den SQL-Results verbinde bzw. den SQL-Result auf unterschiedliche Variablen aufteile.
ja das Problem kenne ich auch. Auch beim mitglieferten Datenbankbeispiel kann man wenig erkennen. Habe aber im Internet noch ein Beispiel gefunden (frag mich nur nicht woher, ist schon länger her) und so habe ich das gelöst.
Definiere eine Variable
PUBLIC cn AS NEW Connection
PUBLIC rs AS Result
In einer Subroutine, die z.B. das Formular öffnet und die Verbindung zur Mysql-Datenbank aufgebaut wird, schreibst du
'Verbindung zur Datenbank
WITH cn
.Type = "mysql"
.Host = "localhost"
.Login = "dirk"
.Password = ""
.Name = "Optodatex"
END WITH
'Öffnen der Datenbank Stammdaten
TRY cn.Open
IF ERROR THEN
PRINT "Cannot Open Database. Error = "; Error.Text
ELSE
'Aufnahme der Datensätze in die Variable mittels SQL-Befehl
rs = cn.Exec("SELECT * FROM Stammdaten")
In einer weiteren Subroutine kannst du dann die Datenfelder mit den Formularfeldern verbinden
PRIVATE SUB updateFieldValue()
DIM xquery AS String
DIM rows AS Integer
DIM I AS Integer
'Datenfelder füllen
txtKdnr.Text = rs!kdnr
xquery = rs!kdnr
txtAnrede.Text = rs!titel
txtTitel.Text = rs!anrede
txtVorname.Text = rs!vname
txtZuname.Text = rs!zname
txtGebdat.Text = rs!datum
txtStrasse.Text = rs!strasse
txtPLZ.Text = rs!plz
txtOrt.Text = rs!ort
txtTelefon1.Text = rs!telefon1
txtTelefon2.Text = rs!telefon2
txtKasse.Text = rs!kasse
txtKassennr.Text = rs!kassennr
txtVersnr.Text = rs!versichert
txtGueltig.Text = rs!gultig
txtStatus.Text = rs!status
txtStatusnr.Text = rs!nrstatus
' Auftragsdaten für Tabelle auslesen
rs2 = cn.Exec("SELECT `Stammdaten`.`kdnr`, `Zentraldaten`.`kdnr`, `Zentraldaten`.`aufart`, `Zentraldaten`.`aufnr`, `Zentraldaten`.`adatum` FROM `Optodatex`.`Zentraldaten` `Zentraldaten`, `Optodatex`.`Stammdaten` `Stammdaten` WHERE ( `Zentraldaten`.`kdnr` = `Stammdaten`.`kdnr` ) AND ( ( `Zentraldaten`.`kdnr` = &1) ) ORDER BY `Stammdaten`.`kdnr` Asc", xquery)
rows = rs2.Count
gridAuftr.Columns.Count = 3
gridAuftr.Rows.Count = rows + 1
gridAuftr[0, 0].Text = "Auftragsnr."
gridAuftr[0, 1].Text = "Datum"
gridAuftr[0, 2].Text = "Art"
FOR I = 1 TO rows
gridAuftr[I, 0].Text = rs2!aufnr
gridAuftr[I, 1].Text = rs2!adatum
gridAuftr[I, 2].Text = rs2!aufart
rs2.MoveNext
NEXT
END
Falls einer der hier mitlesenden eine andere vorgehensweise kennt, bitte melden. Wie man im obigen Beispiel sieht, habe ich für den Anfang gerade mal 20 Datenbankfelder.
Das von mir angestrebte Programm zur Kunden und Auftragsverwaltung wird aber weit über 500 Datenfelder in verknüpften Datenbanken besitzen.
Gibt es eine bessere Lösung als alle diese Datenfelder von Hand mit den Formularfeldern zu verknüpfen.
Gruß Dirk