Open SQL-Datenbank - Benutzereingabe (Datum) - Fehler beim Konvertieren des Datentyps varchar in datetime.Hallo,
Ich versuche, in einem Skript eine Verbindung zu einer SQL-Datenbank herzustellen, indem ich Benutzereingaben für Daten verwende.
Wenn ich das Skript ausführe, erhalte ich die folgende Fehlermeldung -
"[Microsoft][ODBC SQL Server-Treiber][SQL Server]Fehler beim Konvertieren des Datentyps varchar in datetime."
Bitte, wie kann ich dieses Problem lösen?
Danke
nw = New Window( "test",
H LIST BOX(
Text box("Start Date"),
a = numbereditbox(0),
a << set format(format("m/d/y")),
a << set width(12),
a << set(today()),
Spacer Box( size( 10, 20 ) ),
Text box("End Date"),
b = numbereditbox(0),
b << set format(format("m/d/y")),
b << set width(12),
b << set(today())),
Spacer Box( size( 1, 20 ) ),
Button Box( "OK",
farray = Eval List(
{a << get text, b << get text}
);
nw << close window;
)
);
dta= Open database("DRIVER=SQL Server; SERVER=XXX; Trusted_connection = Yes",
"
EXEC dbo.listData @Criteria = '
<SYSTEME>
<DATA name="\!"Alarm\!"">
<COLUMNS>
<COLUMN name="\!"Timestamp\!"/">
</COLUMN>
<WHERE>
<COLUMN name="\!"Resource\!"" operator="\!"Like\!"" value="\!"%a12%\!"/">
</COLUMN>
<PROJECTS>
<PROJECT name="\!"abc\!"/">
</PROJECT>
</PROJECTS>
</WHERE>'
,@StartDateTime = '^farray[1]^'
,@EndDateTime =' ^farray[2]^'");
</COLUMNS></DATA></SYSTEME>Betreff: Open SQL-Datenbank - Benutzereingabe (Daten) - Fehler beim Konvertieren des Datentyps varchar in datetime.Für datetime verwende ich die folgende Anweisung:
t_now = "'" || Substitute(Format(today(),"yyyy-mm-ddThh:mm:ss"),"T"," ") || "'";
Betreff: Open SQL-Datenbank - Benutzereingabe (Daten) - Fehler beim Konvertieren des Datentyps varchar in datetime.Ich habe Ihr Fenster so geändert, dass es modal ist.Andernfalls wird das Fenster angezeigt und es wird versucht, die SQL-Anweisungen auf einmal auszuführen.Ich bin mir nicht sicher, welches Format für Daten in SQL Server benötigt wird, daher müssen Sie möglicherweise ein wenig recherchieren.Kopieren Sie die SQL-Anweisung, die in das Protokoll ausgegeben wird, und versuchen Sie, sie manuell in einem SQL Server-Fenster auszuführen.
nw = New Window( "test", <<MODAL>
<DATA name="Alarm">
<COLUMNS>
<COLUMN name="Timestamp"></COLUMN>
</COLUMNS>
<WHERE>
<COLUMN name="Resource" operator="Like" value="%a12%"></COLUMN>
</WHERE>
<PROJECTS>
<PROJECT name="abc"></PROJECT>
</PROJECTS>
</DATA>
</MODAL>'
,@StartDateTime = '^start_date^'
,@EndDateTime = '^end_date^']\");
show(sql_statement);
// Uncomment the next line to run the command in SQL Server
//dta= Open database("DRIVER=SQL Server; SERVER=XXX; Trusted_connection = Yes", sql_statement);
Andere Änderungen - wenn Sie das ^xxx^-Konstrukt verwenden möchten, müssen Sie dies in evalinsert() einschließen.Ich habe die Anführungszeichen \[ und ]\ verwendet, damit Ihre SQL-Anweisung etwas sauberer ist.