Ein variabler Wert aus einer Benutzer-SQL-AbfrageIch versuche, einen Variablenwert vom Benutzer zu erhalten und ihn als SQL-Abfrage zu verwenden
Wie kann ich einer Abfrage etwas hinzufügen?
Danke!

Betreff: Ein Variablenwert aus einer Benutzer-SQL-AbfrageHallo zusammen,
@gzmorgan0 , Vielen Dank für deine Lösung, das funktioniert gut!
@uday_guntupalli @stan_koprowski @Jeff_Perkinson ,Ich danke euch allen für eure Unterstützung!
Betreff: Ein Variablenwert aus einer Benutzer-SQL-Abfrage@Botzal , suchen Sie bitte im JMP Scripting Index >> Functions nach Open Database(). Diese Funktion hat 2 erforderliche und 2 Optionsargumente:
- die Verbindungszeichenfolge
- die Abfragezeichenfolge
- “ für die Ausgabetabelle verwenden, möchten Sie dies wahrscheinlich nicht
Sie haben für die ersten beiden Argumente eine Zeichenfolge verwendet.Es ist schwierig, Fehler zu beheben und dies zu erkennen, wenn wir keine Testdateien haben, die wir verwenden können. Entfernen Sie die Kommentarzeilen für dt_ScadaData, um zu testen, ob es ausgeführt wird. Entfernen Sie die Kommentarzeilen für NW, wenn die Benutzeroberfläche automatisch geschlossen werden soll. Möglicherweise möchten Sie, dass es geöffnet bleibt, damit Sie mehrere Tische ziehen können. Wenn es das ist, was Sie wollen, dann Eval Einfügen in(qstr ), ersetzt die Platzhaltervariablen foo[1] und foo[2].Für den Fall, dass Sie die Benutzeroberfläche mehr als einmal verwenden möchten, habe ich eine Variable cq_str erstellt, der die Variablenzeichenfolge zugewiesen ist. Das sollte also funktionieren.Normalerweise verwende ich nicht Eval Insert Into(), sondern so etwas wie cq_str = Eval Insert(q_str);
LB = Lineup Box(1);
LB << Append(
PB_Inputs = Panel Box("User Inputs",
a = Text Edit Box( "" ), //foo[1]
b = Text Edit Box( "" ), // foo[2]
);
);
q_connect = "DRIVER=SQL Server;SERVER=MyServer;Trusted_Connection=Yes";
q_str = "DECLARE @StartDateTime datetime = DATEADD(day, -2, CAST(GETDATE() AS varchar(11)))
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria=
'<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime
Scada Data";
MyUI = V List Box(LB,
BB_UserInputUnload = Button Box("Ok",
foo = Eval List( {a << get text, b << get text} );
Show( foo );
cq_str = q_str;
Show(cq_str);
Eval Insert Into(cq_str);
Show(cq_str);
//dt_ScadaData = Open Database(q_connect, cq_str); //this is the runit command
//NW << Close Window(); //this will close the UI don't use if you want to keep ist open
) //end ButtonBox
); //end VListBox
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);</SCADAPORTAL>
Betreff: Ein Variablenwert aus einer Benutzer-SQL-Abfrage@uday_guntupalli ,
Was ich gepostet habe, ist ein Protokoll – siehe unten

Das Protokoll -
foo = {"p123", "v123"};
//:*/
LB = Lineup Box(1);
LB << Append(
PB_Inputs = Panel Box("User Inputs",
a = Text Edit Box( "" ), //foo[1]
b = Text Edit Box( "" ), // foo[2]
);
);
MyUI = V List Box(LB,
BB_UserInputUnload = Button Box("Ok",
foo = Eval List( {a << get text, b << get text} );
Show( foo );
q_str ="DRIVER=SQL Server;SERVER=My Server(I changed);Trusted_Connection=Yes",
"DECLARE @StartDateTime datetime = DATEADD(day, -1, CAST(GETDATE() AS varchar(11))) -- 17 Days Back
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime","Scada Data";
Show(q_str);
q_str = Eval Insert INTO(q_str);
Show(q_str);
),
);
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);
/*:</SCADAPORTAL>Sind Sie sicher, dass ich „Strings mit Trennzeichen außerhalb der Anführungszeichen definieren“?Bitte markieren Sie die Trennzeichen und sagen Sie mir, was Sie meinen.
* Das Problem besteht darin, dass ich das Skript ausführe und Werte einfüge Panel-Box und dann drücke ich darauf Schaltflächenfeld („Ok“.)Ich habe keine Daten erhalten.
Danke.
Betreff: Ein Variablenwert aus einer Benutzer-SQL-Abfrage@Botzal ,
Sie haben das Protokoll immer noch nicht eingefügt. Wenn Sie im JMP-Startfenster Strg + Umschalt + L drücken, wird ein Protokollfenster geöffnet. Alternativ können Sie in Ihrem Skripteditor mit der rechten Maustaste klicken und „Eingebettetes Protokoll anzeigen“ auswählen, wie hier gezeigt, bevor Sie Ihr Skript ausführen:

Darüber hinaus definieren Sie erneut Zeichenfolgen mit Trennzeichen außerhalb der Anführungszeichen. Bitte beziehen Sie sich auf frühere Korrekturen, die ich angeboten habe, und fügen Sie das Protokoll ein. Wenn Sie das Protokoll nicht einfügen, kann ich Ihnen keine weiteren Hinweise geben
Betreff: Ein Variablenwert aus einer Benutzer-SQL-Abfrage@uday_guntupalli Vielen Dank für Ihre Lösung.
Ich habe versucht, Ihren Rat umzusetzen, aber es hat nicht funktioniert. 
1. Die Abfrage funktioniert – wenn ich Zahlen in ein Skript einfügen Und Keine Variablen vom Benutzer . Beispiele: Anstelle von foo[1] füge ich p123 ein und anstelle von oo[2] füge ich v123 ein.
dt_ScadaData = Open Database("DRIVER=SQL Server;SERVER=My Server ;Trusted_Connection=Yes",
"DECLARE @StartDateTime datetime = DATEADD(day, -1, CAST(GETDATE() AS varchar(11))) -- 17 Days Back
DECLARE @EndDateTime datetime = DATEADD(day,1, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"p123\!"" value="\!"v123\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime","Scada Data");</SCADAPORTAL>2. Das Protokoll -
foo = {"P123", "V123"};
//:*/
LB = Lineup Box(1);
LB << Append(
PB_Inputs = Panel Box("User Inputs",
a = Text Edit Box( "" ), //foo[1]
b = Text Edit Box( "" ), // foo[2]
);
);
MyUI = V List Box(LB,
BB_UserInputUnload = Button Box("Ok",
foo = Eval List( {a << get text, b << get text} );
Show( foo );
q_str ="DRIVER=SQL Server;SERVER=My Server;Trusted_Connection=Yes",
"DECLARE @StartDateTime datetime = DATEADD(day, -1, CAST(GETDATE() AS varchar(11))) -- 17 Days Back
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime","Scada Data";
Show(q_str);
q_str = Eval Insert INTO(q_str);
Show(q_str);
),
);
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);
/*:</SCADAPORTAL>3. Können Sie dem Skript in Kapitel 2 entnehmen, dass ich Ihren Rat umsetze, wenn ich Sie richtig verstanden habe?
Betreff: Ein Variablenwert aus einer Benutzer-SQL-Abfrage@Botzal ,
Sie müssen sich die Ratschläge ansehen, die wir Ihnen bereits gegeben haben, und versuchen, sie zu befolgen. Bitte helfen Sie uns, Ihnen zu helfen. Wenn Sie sagen, es funktioniert nicht, wissen wir nicht oder können nicht sehen, was los ist. Es wird uns bei der Fehlerbehebung helfen, wenn Sie klar darlegen können, was Sie sagen und warum es Ihrer Meinung nach nicht funktioniert.
1. Haben Sie überprüft, dass die Abfrage selbstständig funktioniert?
2. Bitte fügen Sie das Protokoll ein
3. Sie werten die Zeichenfolge nicht aus, wie ich zuvor gezeigt habe. Bitte werten Sie die Zeichenfolge aus, indem Sie sie aufrufen, nachdem sie erstellt wurde.
LB = Lineup Box(1);
LB << Append(
PB_Inputs = Panel Box("User Inputs",
a = Text Edit Box( "" ), //foo[1]
b = Text Edit Box( "" ), // foo[2]
);
);
MyUI = V List Box(LB,
BB_UserInputUnload = Button Box("Ok",
foo = Eval List( {a << get text, b << get text} );
Show( foo );
q_str = "DRIVER=SQL Server;SERVER=My Server;Trusted_Connection=Yes,
DECLARE @StartDateTime datetime = DATEADD(day, -2, CAST(GETDATE() AS varchar(11)))
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime
Scada Data" ;
Show(q_str);
Eval Insert(q_str);
Show(q_str);
q_str; // evaluating the query you constructed
),
);
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);</SCADAPORTAL>
Betreff: Ein Variablenwert aus einer Benutzer-SQL-AbfrageHallo @uday_guntupalli ,
Das Skript, das die @gzmorgan0 hat mir geschickt, funktioniert nicht - siehe JSL unten
Klar, ich habe den Server durch meinen Server ersetzt.
Bitte helfen Sie mir, das Skript zu reparieren.
Danke.
LB = Lineup Box(1);
LB << Append(
PB_Inputs = Panel Box("User Inputs",
a = Text Edit Box( "" ), //foo[1]
b = Text Edit Box( "" ), // foo[2]
);
);
MyUI = V List Box(LB,
BB_UserInputUnload = Button Box("Ok",
foo = Eval List( {a << get text, b << get text} );
Show( foo );
q_str = "DRIVER=SQL Server;SERVER=My Server;Trusted_Connection=Yes,
DECLARE @StartDateTime datetime = DATEADD(day, -2, CAST(GETDATE() AS varchar(11)))
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime
Scada Data" ;
Show(q_str);
Eval Insert(q_str);
Show(q_str);
),
);
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);</SCADAPORTAL>
Betreff: Ein Variablenwert aus einer Benutzer-SQL-AbfrageHallo @uday_guntupalli ,
Das Skript, das die @gzmorgan0 hat mir geschickt, funktioniert nicht - siehe JSL unten
Klar, ich habe den Server durch meinen Server ersetzt.
Bitte helfen Sie mir, das Skript zu reparieren.
Danke.
LB = Lineup Box(1);
LB << Append(
PB_Inputs = Panel Box("User Inputs",
a = Text Edit Box( "" ), //foo[1]
b = Text Edit Box( "" ), // foo[2]
);
);
MyUI = V List Box(LB,
BB_UserInputUnload = Button Box("Ok",
foo = Eval List( {a << get text, b << get text} );
Show( foo );
q_str = "DRIVER=SQL Server;SERVER=My Server;Trusted_Connection=Yes,
DECLARE @StartDateTime datetime = DATEADD(day, -2, CAST(GETDATE() AS varchar(11)))
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime
Scada Data" ;
Show(q_str);
Eval Insert(q_str);
Show(q_str);
),
);
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);</SCADAPORTAL>Betreff: Ein Variablenwert aus einer Benutzer-SQL-AbfrageHallo @Botzal ,
Welche Version von SQL Server verwenden Sie?
Es scheint, dass Sie möglicherweise über eine Testversion von SQL Server verfügen, die abgelaufen ist.
Können Sie überprüfen, ob Ihr SQL Server nicht im Evaluierungsmodus ausgeführt wird?
Danke,
Stan
Betreff: Ein Variablenwert aus einer Benutzer-SQL-AbfrageBitte posten Sie Ihr Protokoll. Dieses Skript führt keine Abfrage aus, sondern schreibt lediglich das Ergebnis des Abfragebefehls in das Protokoll.
Welche JMP-Version verwenden Sie?JMP verfügt über einen Abfrage-Builder.Sie könnten diese Abfrage erstellen, um zur Eingabe der beiden benötigten Felder aufzufordern. Anschließend können Sie das Skript bzw. die Abfrage speichern.Es gibt mehrere Fehlerquellen für eine Abfrage.
- Falsche Abfragesyntax. Beachten Sie, dass die Groß-/Kleinschreibung wichtig sein kann.Wenn also ein Benutzer „Harry“ eingibt, das Datenbankfeld jedoch „HARRY“ lautet, ist das Ergebnis leer.Außerdem erfordert SQL Anführungszeichen um einen Wert mit Leerzeichen oder Sonderzeichen. Also Erste , lassen Sie ein Skript ohne die Eingabeaufforderung arbeiten, d. h. die Werte der Eingabeaufforderung fest codieren und den Codeabschnitt dtScadaData = Open Database (usw.) ausführen.
- Sobald das fest codierte Skript funktioniert, versuchen Sie es mit der Eingabeaufforderung und geben Sie genau das ein, was oben fest codiert wurde.Drucken Sie auch die Zeichenfolge aus und vergleichen Sie.mple.
- Die Abfrageanmeldung kann eine Fehlerquelle sein
- Ihre Verbindungszeichenfolge zum Datenbanktreiber ist möglicherweise nicht dieselbe wie bei anderen Benutzern.Ich habe beispielsweise den Treiber für Excel so eingerichtet, dass er „Excel-Dateien“ heißt, jemand anderes könnte einen anderen Namen haben.
- Andere Benutzerrechte können sich von Ihren unterscheiden und möglicherweise keinen Zugriff auf die Dateien/Tabellen haben.
- Ich bin mir sicher, dass es noch mehr gibt,
Ich sehe das @uday_guntupalli habe gerade geantwortet. Also werde ich jetzt aufhören.
Betreff: Ein Variablenwert aus einer Benutzer-SQL-Abfrage@Botzal ,
Wenn Sie sagen, dass es nicht funktioniert hat, können Sie erklären, was Sie sehen.@gzmorgan0 war richtig, als ich meinen Fehler erkannte, wo ich Eval Insert Into anstelle von Eval Insert hätte verwenden sollen:

Ersetzen Sie außerdem den Servernamen in der oben gezeigten Zeichenfolge?
Darüber hinaus erstellen Sie die Zeichenfolge bisher nur. Sie müssen die Zeichenfolge nach der Erstellung tatsächlich ausführen, um die Ergebnisse zu sehen, wie im folgenden Beispiel aus dem Skriptindex gezeigt:
ex = "Today is ^As Date( Today())^";
Eval Insert Into( ex );
ex;
Betreff: Ein Variablenwert aus einer Benutzer-SQL-AbfrageEs funktioniert immer noch nicht 
Betreff: Ein Variablenwert aus einer Benutzer-SQL-AbfrageIch denke, Sie müssen den Code ändern q_str = Eval Insert(q_str) oder Auswerten Einfügen in(q_str) . Eval Insert Into() mit Änderung des Werts seines Arguments und es muss ein gespeicherter Wert wie q_str sein; Eval Insert() gibt nur einen String zurück, sein Argument wird nicht geändert.
Show(q_str);
q_str = Eval Insert(q_str);
Show(q_str);
),
);
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);Betreff: Ein Variablenwert aus einer Benutzer-SQL-Abfrage@uday_guntupalli
Hallo,
Vielen Dank für Ihre Lösung und die Erläuterung.
Ich versuche, das Skript auszuführen und die Daten in das Feldfeld einzufügen. Wenn ich versuche, die OK-Taste zu drücken, passiert nichts.
Bitte beachten Sie das Protokoll unten
LB = Lineup Box(1);
LB << Append(
PB_Inputs = Panel Box("User Inputs",
a = Text Edit Box( "" ), //foo[1]
b = Text Edit Box( "" ), // foo[2]
);
);
MyUI = V List Box(LB,
BB_UserInputUnload = Button Box("Ok",
foo = Eval List( {a << get text, b << get text} );
Show( foo );
q_str = "DRIVER=SQL Server;SERVER=My Server;Trusted_Connection=Yes,
DECLARE @StartDateTime datetime = DATEADD(day, -2, CAST(GETDATE() AS varchar(11)))
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime
Scada Data" ;
Show(q_str);
Eval Insert(q_str);
Show(q_str);
),
);
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);</SCADAPORTAL>Betreff: Ein Variablenwert aus einer Benutzer-SQL-Abfrage@Botzal ,
Ich denke, der Grund, warum Sie auf den Fehler gestoßen sind, liegt darin, dass Ihre Zeichenfolge Kommas und andere Trennzeichen enthält. Ich habe Ihr Skript neu geschrieben und stelle es unten zur Verfügung:
LB = Lineup Box(1);
LB << Append(
PB_Inputs = Panel Box("User Inputs",
a = Text Edit Box( "" ), //foo[1]
b = Text Edit Box( "" ), // foo[2]
);
);
MyUI = V List Box(LB,
BB_UserInputUnload = Button Box("Ok",
foo = Eval List( {a << get text, b << get text} );
Show( foo );
q_str = "DRIVER=SQL Server;SERVER=MyServer;Trusted_Connection=Yes,
DECLARE @StartDateTime datetime = DATEADD(day, -2, CAST(GETDATE() AS varchar(11)))
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime
Scada Data" ;
Show(q_str);
Eval Insert(q_str);
Show(q_str);
),
);
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);</SCADAPORTAL>Außerdem ein paar Vorschläge:
1. Wenn Sie Präsentationsboxen konstruieren, trennen Sie diese und bauen Sie sie unabhängig voneinander auf
2. Wenn Sie Anweisungen wie Eval verwenden, definieren Sie Ihre Zeichenfolge oder Anweisung immer separat. Dies hilft Ihnen, den Fehler zu isolieren und zu sehen, welche Codezeile den Fehler verursacht
Hoffe das hilft.
Betreff: Ein Variablenwert aus einer Benutzer-SQL-Abfrage@gzmorgan0
@uday_guntupalli
@Jeff_Perkinson
Das ist das Protokoll -
foo = {"DS", "FD"};
Name Unresolved: erver in access or evaluation of 'erver' , erver
//:*/
Names default to here(1);
uservalue = New Window("Insert Data",
a = Text Edit Box(""), //foo[1]
b = Text Edit Box(""), //foo[2]
Button Box("OK",
foo = Eval List({ a << get text, b << get text});
show(foo);
q_str = EvalInsert("DRIVER=SQL Server;SERVER=-----;Trusted_Connection=Yes",
"DECLARE @StartDateTime datetime = DATEADD(day, -2, CAST(GETDATE() AS varchar(11)))
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime","Scada Data");
show(q_str);
wait(0);
uservalue << close window();
)
);
/*:
DisplayBox[]</SCADAPORTAL>
Betreff: Ein Variablenwert aus einer Benutzer-SQL-Abfrage@gzmorgan0
@uday_guntupalli
@Jeff_Perkinson
Hallo zusammen,
Danke für deine Lösung!
Das Skript funktioniert immer noch nicht 
Wenn ich versuche, die Parameter einzufügen, wird mir die folgende Meldung angezeigt: „Name ungelöst: immer im Zugriff oder bei der Auswertung von „erver“, erver“
Obwohl ich das Skript mit dem folgenden Befehl ausführe: Namen sind standardmäßig hier(1);
Names default to here(1);
uservalue = New Window("Insert Data",
a = Text Edit Box(""), //foo[1]
b = Text Edit Box(""), //foo[2]
Button Box("OK",
foo = Eval List({ a << get text, b << get text});
show(foo);
q_str = EvalInsert("DRIVER=SQL Server;SERVER= ----;Trusted_Connection=Yes",
"DECLARE @StartDateTime datetime = DATEADD(day, -2, CAST(GETDATE() AS varchar(11)))
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime","Scada Data");
show(q_str);
wait(0);
uservalue << close window();
)
);</SCADAPORTAL>
Betreff: Ein Variablenwert aus einer Benutzer-SQL-AbfrageDas folgende Skript besteht aus zwei Teilen: einem modalen Dialog und einem nicht-modalen Dialog.
Names default to here(1);
//Modal method
foo = New Window("Insert Data", <<MODAL></MODAL>
'
etc. ");
Show(q_str);
//uncomment the line below after you have tested the string is correct
//dt_ScadaData = Open Database("DRIVER=SQL Server; SERVER=....", q_str);
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Non-Modal Method
//--- Show commands are written to teh LOG not the embedded log
uservalue = New Window("Insert Data",
a = Text Edit Box(""), //foo[1]
b = Text Edit Box(""), //foo[2]
Button Box("OK",
foo = Eval List({ a << get text, b << get text});
show(foo);
q_str = EvalInsert("DECLARE
@StartDateTime datetime = DATEADD( etc.
'
etc. ");
show(q_str);
wait(0);
uservalue << close window();
)//end ButtonBox
); //end New Window
Hier sind die Ergebnisse im Protokoll, ich habe Katze und Küken eingegeben, dann Bulle und Kuh.

Betreff: Ein Variablenwert aus einer Benutzer-SQL-Abfrage@Botzal , das Benutzerwertfenster ist nicht modal. Daher versucht die JSL unter dem neuen Fenster ausgeführt zu werden, bevor der Benutzer die Möglichkeit hat, die Schaltfläche auszuwählen.
Wissen Sie, wie Sie einen Dialog modal gestalten oder die Abfrage als Teil der Schaltfläche „OK“ ausführen?
Betreff: Ein Variablenwert aus einer Benutzer-SQL-Abfrage@Botzal ,
Bitte posten Sie, was Sie mit dem hier gezeigten „JSL“-Block versucht haben, und erstellen Sie, wenn möglich, einen Snapshot des Protokolls, damit die Benutzer in der Community versuchen können, zu verstehen, was bei Ihnen nicht funktioniert.
Betreff: Ein Variablenwert aus einer Benutzer-SQL-Abfrage@Jeff_Perkinson
@Jeff_Perkinson schrieb:
@uday_guntupalli 's Vorschlag von Ersatz() ist gut.
Eine weitere Funktion, mit der Sie sich vielleicht vertraut machen möchten, ist Eval Insert() . Es kann Variablenwerte in Textzeichenfolgen einfügen .
myvar="a";
response=eval insert("The correct answer is: ^myvar^");
print(response);Hier ist das Protokoll dieses Codes:
/*:
//:*/
myvar="a";
response=eval insert("The correct answer is: ^myvar^");
print(response);
/*:
"The correct answer is: a"
Vielen Dank für Ihre Lösung.
Entschuldigung, ich versuche es, aber es funktioniert nicht.
Können Sie es mir bitte erklären?
Betreff: Ein Variablenwert aus einer Benutzer-SQL-Abfrage@uday_guntupalli 's Vorschlag von Ersatz() ist gut.
Eine weitere Funktion, mit der Sie sich vielleicht vertraut machen möchten, ist Eval Insert() . Es kann Variablenwerte in Textzeichenfolgen einfügen .
myvar="a";
response=eval insert("The correct answer is: ^myvar^");
print(response);
Hier ist das Protokoll dieses Codes:
/*:
//:*/
myvar="a";
response=eval insert("The correct answer is: ^myvar^");
print(response);
/*:
"The correct answer is: a"Betreff: Ein Variablenwert aus einer Benutzer-SQL-Abfrage@Botzal ,
Eine Möglichkeit, das zu erreichen, was Sie wollen, wäre die Verwendung von Substitiute(). Zum Beispiel
WhereStatement = " WHERE [ReadTime] >= DateTimeStart and [ReadTime] <= DateTimeEnd ";
WhereStatement = Substitute(WhereStatement, "DateTimeStart", "'" || MyStartTime ||"'", "DateTimeEnd", "'" || MyEndTime||"'");
Im oben gezeigten Beispiel werden DateTimeStart und DateTimeEnd in der Abfrage durch MyStartTime und MyEndTime ersetzt, die auf Benutzereingaben basieren.
Ebenso könnten Sie in Ihrem Fall die SqlQuery zunächst als separate Zeichenfolge initialisieren und Substitute() verwenden, um die gewünschten Zeichenfolgen zu ersetzen. Sobald Sie dies getan haben und die gewünschte Abfrage haben, fragen Sie die Datenbank ab. Lassen Sie mich wissen, ob das hilft. Ein kleiner Rat für die Zukunft ist: Bitte posten Sie JSL mit dem „JSL“-Block, damit die Leute das von Ihnen gepostete Skript problemlos verwenden können, um Beispiele anzubieten