Ciao,
Sto provando a connettermi a un database SQL in uno script utilizzando l'input dell'utente per le date.
Quando eseguo lo script, ottengo il seguente errore:
"[Microsoft][Driver ODBC SQL Server][SQL Server]Errore durante la conversione del tipo di dati varchar in datetime."
Per favore, come posso risolvere questo problema?
Grazie
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>Per datetime uso la seguente istruzione:
t_now = "'" || Substitute(Format(today(),"yyyy-mm-ddThh:mm:ss"),"T"," ") || "'";
Ho cambiato la tua finestra per essere modale.In caso contrario, viene visualizzata la finestra e si tenta di eseguire l'SQL tutto in una volta.Non sono sicuro del formato necessario per le date in SQL Server, quindi potrebbe essere necessario fare una piccola ricerca su questo.Copiare l'istruzione SQL che genera l'output nel registro e provare a eseguirla manualmente in una finestra del server SQL.
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);
Altre modifiche - se vuoi usare il costrutto ^xxx^ devi racchiuderlo in evalinsert().Ho usato i caratteri di escape tra virgolette \[ e ]\ quindi la tua istruzione SQL è un po' più pulita.