2017-01-20 3 views
0

Ich möchte die SQL-Anweisung eines Datasore ändern und Probleme mit den einfachen Anführungszeichen haben. Das neue SQL sollte sein:Powerbuilder: Syntax zum Ändern von SQL eines Datenspeichers

Select 'F' as c_value from table 

Das Problem (ich denke) sind die einfachen Anführungszeichen.

datastore.Modify("DataWindow.Table.Select='Select 'F' as c_value from table'") 

Von diesem Befehl erhalte ich einen falschen Syntaxfehler in der Nähe des F. I thik entkommen muß die Anführungszeichen in ‚F‘, nicht wahr? Aber wie lautet die korrekte Syntax?

Antwort

1

Das ist meine Empfehlung:

ls_Select = "Select 'F' as c_value from table" 
dw_1.Object.DataWindow.Table.Select = ls_Select 
dw_1.SetTransObject(SQLCA) 
dw_1.Retrieve() 
+0

Wenn ich ein 'ls_sql = ids_dw_multi_search.describe ('DataWindow.Table.SQLSelect')' nach der Empfehlung zu tun, ich Erhalte den richtigen SQL-String. Aber dw_1.getItemString (1, 'c_selected') löscht einen ungültigen Zeilen-/Spaltenfehler ... –

+0

Sorry, ich verstehe nicht, die Funktion describe() gibt eine Zeichenkette zurück und wendet keine Änderung im Datenfenster an, die Funktion modify() ändert sich im Datenfenster, weil es das Feld des Datenfensters 'c_selected' sammelt und nicht das Feld Datenfenster 'c_value' sammeln will, wie in Ihrer Frage angegeben? –

+0

Entschuldigung, das war ein Kopier-/Pase-Fehler. Die Punktnotation funktioniert. Im Datenspeicher habe ich jetzt die richtige SQL. Deine Antwort ist richtig. Jetzt möchte ich eine getItemString auf c_value tun und erwartet, ein 'F' zu bekommen. Stattdessen wird eine ungültige Datawindow Zeile/Spalte angezeigt. Ich schätze, das liegt daran, dass der c_value nicht in der Tabellendefinition ist, oder? –

1

try this:

datastore.Modify("DataWindow.Table.Select='Select ~'F~' as c_value from table' "); 
Verwandte Themen