[erledigt] sql befehl mit variablen ??

Spezielle Fragen zu PostgreSQL, MySQL, SQLite, SQL ...
Antworten
linuxer
Foriker
Beiträge: 102
Registriert: Di 7. Nov 2006, 20:47
Kontaktdaten:

[erledigt] sql befehl mit variablen ??

Beitrag von linuxer » Di 5. Dez 2006, 09:22

Hallo Leute,

wahrscheinlich bin ich zu blöd dafür, aber ich versuche schon seit einer Stunde auf meine Test-datenbank zu zugreifen.

Wenn ich folgendes mache :
rs = cn.Exec("SELECT * FROM kunde where vorname like 'matthias'")

Dann funktioniert es einwandfrei.

Wie aber gebe ich den Namen (in diesem Fall, matthias) als Variable an ??
Jedesmal wenn ich den Namen versuche als Variable anzugeben versucht er die Variable als Feldnamen anzusprechen und die gibt es natürlich nicht.

dim name as string
.
.
sql_string = "SELECT * FROM kunde WHERE vorname LIKE " & name
.
.
rs = cn.Exec(sql_string)
vornamelabel.Text = rs!vorname
nachnamelabel.Text = rs!nachname

Bitte Hilfe :(

Gruß
Thomas
Zuletzt geändert von linuxer am Di 5. Dez 2006, 11:33, insgesamt 1-mal geändert.

linuxer
Foriker
Beiträge: 102
Registriert: Di 7. Nov 2006, 20:47
Kontaktdaten:

Beitrag von linuxer » Di 5. Dez 2006, 11:32

Hat sich erledigt.
Danke.

Gruß
Thomas

Duke
Foriker
Beiträge: 11
Registriert: Mo 11. Dez 2006, 19:39
Kontaktdaten:

Ja - und jetzt ? Lösung statt [Erledigt] ?

Beitrag von Duke » Di 9. Jan 2007, 23:08

WIE hat es sich denn jetzt erledigt ?

Ich habe (fast) das gleiche Problem, daß ich keine Variable als Feldnamen angeben kann. Allerdings klappt das SQL-Statement bei mir einwandfrei - ich wähle per .edit aus, statt SQL-Exec.

Jetzt will ich aber in den zu schreibenden Feldnamen bestimmen, der in einem String übergeben wird - und ein Feld mit dem Namen des Strings existiert natürlich nicht.

An Deinem Beispiel abgebildet wäre das ungefähr:

Code: Alles auswählen

dim name as string
dim sFeldVorname as string="vorname"
dim sFeldNachname as string="nachname"
.
.
sql_string = "SELECT * FROM kunde WHERE vorname LIKE " & name
.
.
rs = cn.Exec(sql_string)
rs!sFeldVorname="Hugo"
rs!sFeldnachname="Müller"


Ich will also in eine DB schreiben. sFeldvorname und sFeldnachname exisitieren natürlich nicht als Feldnamen - sind ja Variablennamen. Gibt aber leider einen Fehler: "Feldname existiert nicht".
rs![sFeldVorname] oder rs!"sFeldVorname" oder ähnliches funktioniert nicht - vielleicht kann man einen Pointer auf die Variable statt des Namens übergeben ?
Die intuitivere Variante rs!("Feldname") für den richtigen Namen und rs!(Feldnamenvariable) wäre nett und konsequent, ist aber nicht so....

Table ect sind natürlich einwandfrei geöffnet und beschreibbar, die in den Variablen stehenden Feldnamen existieren in der Tabelle usw. Wird statt der Variable der richtige Feldname angegeben, klappt es. Hilft mir aber nicht weiter.

Duke.

linuxer
Foriker
Beiträge: 102
Registriert: Di 7. Nov 2006, 20:47
Kontaktdaten:

Beitrag von linuxer » Mi 10. Jan 2007, 06:59

Hallo Duke,

ist zwar schon ne weile her, aberich habe das so gelöst.
Gibt vielleicht noch ne edlere variante, aber es funktioniert.

######################################
PUBLIC SUB neuedatenbutton_Click()


IF Len(vornameschreiben.Text) > 1 AND Len(nachnameschreiben.Text) > 1 THEN
vorname_schreiben = vornameschreiben.Text
nachname_schreiben = nachnameschreiben.Text
WITH cn
.Type = "mysql"
.Host = "localhost"
.Login = "mysql"
.Password = "mysql"
.Name = "test1"
END WITH
TRY cn.Open
rs1 = cn.Exec("INSERT INTO kunde (vorname, nachname) Values ('"& vorname_schreiben & "', '" & nachname_schreiben &"')")
TRY cn.Close
vornameschreiben.Text = ""
nachnameschreiben.Text = ""
ELSE
statuslabel.Text = "Achtung Datenfelder leer!"
WAIT 1
statuslabel.Text = ""
END IF
END

#######################################

gruß
Thomas

Duke
Foriker
Beiträge: 11
Registriert: Mo 11. Dez 2006, 19:39
Kontaktdaten:

Beitrag von Duke » Mi 10. Jan 2007, 10:06

Danke erstmal, nach einiger Suche im Netz kam ich natürlich auch zum SQL-Statement "INSERT INTO..". Ist natürlich nicht so elegant wie die .edit-Methode (mit der das gegen jede Erwartung nicht funktioniert).
Aber irgendwie buggy ist es schon, daß das Resultobjekt keine Variablen als Feldnamen akzeptiert.

Auch auf der Gambas-User-Mailinglist keine Antworten dazu.

So ein Problem müssen doch schon andere gehabt haben, oder benutzt jeder nur SQL-Statements.

Duke.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste