Seite 1 von 2

[erledigt] String mit Anführungszeichen an Proc übergeben

Verfasst: 22.01.2008 20:36
von scholly
moin, moin...

Ich bin grade dabei, in meinem Proggi von Subroutinen auf Procedures umzustellen und komm an einer Stelle nicht weiter, wo ich einen String an die Proc übergeben will, der Anführungszeichen enthalten muß.

Bisher in den Subroutinen:
If SQliteGetTable(DBref, "SELECT * FROM maintable WHERE Owner = '"+ thisitem +"'" , thisTable) = #False

If SQliteGetTable(DBref, "SELECT * FROM maintable WHERE MediumTyp like '"+ thisitem +"'" , thisTable) = #False

If SQliteGetTable(DBref, "SELECT * FROM maintable WHERE MediumName like '"+ thisitem +"'" , thisTable) = #False

If SQliteGetTable(DBref, "SELECT * FROM maintable WHERE Genre Glob '*"+ thisitem +"*'", thisTable) = #False
In der Proc steht bisher:
If SQliteGetTable(DBref, filterstring.s , thisTable) = #False
Mag mir jemand zeigen, wie ich filterstring.s beim Aufruf ugs_sql_filtern(dbref,feldercount,LIGinhalt,filterstring) zusammenbasteln muß?

mDv... scholly

Verfasst: 22.01.2008 21:20
von Fluid Byte

Code: Alles auswählen

Chr(34) + thisitem + Chr(34)

Verfasst: 22.01.2008 21:42
von scholly
Was bitte soll denn If SQliteGetTable(DBref, Chr(34) + thisitem + Chr(34) , thisTable) = #False bewirken ?

Ich muß doch den kompletten Teil, z.B. "SELECT * FROM maintable WHERE MediumTyp like '"+ thisitem +"'" inlusive der Anführungszeichen mit rüberbekommen.
Mir ist klar, daß ich irgendwo einen Denkfehler mache, aber ich kann nicht erkennen wo, und Dein Code-Fetzen hilft mir nicht im geringsten.

Verfasst: 22.01.2008 21:55
von Fluid Byte
Du willst Anführungszeichen? Mit Chr(34) bekommst Anführungszeichen!

Wo ist jetzt noch das Problem?

Verfasst: 22.01.2008 22:01
von scholly

Code: Alles auswählen

"SELECT * FROM maintable WHERE MediumTyp like '"+ thisitem +"'"
muß irgendwie an die Proc übergeben werden,
nicht

Code: Alles auswählen

SELECT * FROM maintable WHERE MediumTyp like '"+ thisitem +"'
Jetzt klarer dargestellt, wofür ich eine Lösung brauch ?

Verfasst: 22.01.2008 22:06
von Andreas_S
Was willst du?!

das genau das im String steht? :

Code: Alles auswählen

"SELECT * FROM maintable WHERE MediumTyp like '"+ thisitem +"'"
mit ' und thisitem ist ein String, oder was jetzt, sollen wir raten?

Verfasst: 22.01.2008 22:19
von Rings
SQL.s="SELECT * FROM maintable WHERE MediumTyp like "+ CHR(34) + thisitem +chr(34) + " "

Verfasst: 22.01.2008 22:19
von scholly
@Andreas_S
Ja, genau, steht doch im Ursprungpost klar ersichtlich, oder nicht?

Verfasst: 22.01.2008 22:27
von scholly
@rings

Die Variable thisitem (typ String) wird erst in der Proc gefüllt :(

Code: Alles auswählen

thisitem = (GetGadgetItemText(#main_tree, GetGadgetState(#main_tree), 0))
[edit 21:50]
Aber ich glaub, ich hab ne Lösung gefunden:

Für Filter, die ich nicht implementiere, sondern die der User selber eingeben kann/darf, übergebe ich den vom User in ein StringGadget eingegebenen Text nach rings' Vorbild.

Für die von mir implementierten Filter übergebe ich einen String, anhand dessen ich dann in der Proc checken kann, welche der o.g. Zeilen ausgeführt werden soll.

Verfasst: 23.01.2008 01:13
von NicTheQuick
Also ich hab immer noch nicht verstanden, wo die Schwierigkeit liegt.
Es macht doch keinen Unterschied, ob man eine Funktion aus einem GoSub
oder einer Procedure heraus aufruft. Man muss nur der Procedure alle zu
benutzenden Variablen zur Verfügung stellen. Entweder durch Global oder
über Parameter.

Außerdem ergibt deine Subroutine im ersten Post so wie sie da steht keinen
Sinn. Wohin kommen denn die 'EndIf's? Warum steht in der Procedure nur
noch eine Zeile und was soll sie anders machen?