Valore della colonna per l'input SQLSento che dovrebbe essere semplice, ma dopo aver provato vari metodi negli ultimi giorni, aver cercato discussioni precedenti e aver fatto riferimento all'indice di scripting, sono uscito vuoto.
Voglio scorrere i valori dalla tabella dati e usarli come input per la query SQL, dove i valori della tabella dati sono "codici lotto" e la query SQL fa riferimento a "dove vcLotCode piace...".Mi occuperò del looping più tardi, sto lottando per far funzionare anche il primo valore.Ho provato varie iterazioni di "select", "set", "get", ecc...Qualsiasi aiuto è apprezzato.
// Data table
dt=New Table ("Lots",
Add Rows(5),
New Column ("vcLotCode",
Character,
Nominal,
Set Values ({"lcode.0123","12345.4321","dcode.0123","54321.0123","lotcd.4567"})
),
);
// One attempt to set lot code to values from table
dt<<SELECT rows=""></SELECT>Oggetto: valore della colonna per l'input SQLPerfetto.Grazie mille!
Oggetto: valore della colonna per l'input SQLSono d'accordo che in questo caso, c'è un vantaggio nel suddividere i tre passaggi in azioni separate mentre stai interagendo sulle query.
Usando questo approccio, potresti anche usare Substitute() sul boilerplate sqlstr.
Oggetto: valore della colonna per l'input SQLUn altro commento: stai utilizzando l'operatore LIKE ma non i caratteri jolly.Forse intendevi qualcosa del genere?
"select vcLotCode, vcWaferCode, dAvg
from fr.database
where vcLotCode like '%^lotcode^%'");
Oggetto: valore della colonna per l'input SQLPoche cose:
o Stai utilizzando Open Database.preferisco creare una connessione al database + eseguire SQL + chiudere la connessione al database .Il vantaggio di eseguire SQL è che crei una connessione al database e puoi eseguire più istruzioni SQL con essa.Il database aperto crea una nuova connessione per ogni istruzione SQL
o Non è necessario utilizzare tutte queste valutazioni, sostituire ecc.Inoltre ci sono variabili che non sono definite come datasource e sqlcode.
Prova questo codice:
// Data table
dt = New Table( "Lots",
Add Rows( 5 ),
New Column( "vcLotCode",
Character,
Nominal,
Set Values( {"lcode.0123", "12345.4321", "dcode.0123", "54321.0123", "lotcd.4567"} )
),
);
// Pull data from database using lot code as lookup variable
DSNString = "Driver={SQL Server}; SERVER=rpt; DATABASE=FAB; UID=rrpt; ";
// Create a connection to SQL Server
dbc = create database connection(dsnstring);
// Loop over all lot numbers
for (i = 1, i <= nrows(dt), i++,
lotcode = dt:vclotcode[i];
sqlStr = evalinsert(
"select vcLotCode, vcWaferCode, dAvg
from fr.database
where vcLotCode like '^lotcode^'");
print(sqlstr);
// Create a separate table for each lot number
dt2 = execute sql(dbc, sqlstr);
);
close database connection(dbc);
Oggetto: valore della colonna per l'input SQLCi sono due punti da considerare. Innanzitutto, il codice può essere notevolmente semplificato. Questa modifica ridurrà la possibilità di errori e li renderà più facili da trovare. In secondo luogo, stai manipolando le stringhe di caratteri per gli argomenti della funzione Apri database(). Le virgolette doppie sono il delimitatore per le stringhe. Le virgolette doppie incorporate devono quindi essere identificate con la sequenza di escape "\!" (barra rovesciata, botto).
Prova questo script. (Non posso.)
dt = New Table( "Lots",
Add Rows( 5 ),
New Column( "vcLotCode", Character, Nominal, Set Values( {"lcode.0123", "12345.4321", "dcode.0123", "54321.0123", "lotcd.4567"} ) )
);
For( r = 1, r <= N Row( dt ), r++,
Eval(
Parse(
Substitute(
"dt2 = Open Database(
\!"Driver={SQL Server}; SERVER=rpt; DATABASE=FAB; UID=rrpt; \!",
\!"select vcLotCode, vcWaferCode, dAvg from fr.database where vcLotCode like '\!"LLLLL\!"'\!",
\!"Data\!"
)",
"LLLLL", dt:vcLotCode[r]
)
)
)
);