Scopo
Esegue una query SQL restituendo un recordset con i dati trovati. Può essere utilizzata per eseguire query SQL sul database creando il codice SQL direttamente da programma.
Sintassi
Recordset r = null
//
r := Database.SQLQuery(query)
//
r := Database.SQLQuery(query)
Argomenti
Query | Testo SQL della query da eseguire |
Valore di ritorno
Viene ritornato un oggetto Recordset che contiene il risultato della query.
Esempio di codice
// ***************
// Esegue la query
// ***************
public void QueryAnalyzer.Esegui()
{
// Imposto il tempo di timeout di esecuzione
NorthwindDB.Timeout := Query.Timeout
//
// Svuoto il risultato precedente
delete from Risultato
//
try
{
// Se è stata richiesta una query
if Lower(Left(TrimLeft(Query.Query), C6)) = select
{
Recordset recorset = null //
//
// Imposto il numero massimo di righe ed eseguo la query
NorthwindDB.MaxRows := Query.MaxRows
recorset := NorthwindDB.SQLQuery(Query.Query)
//
// Se la query non ha restituito nessun record
if recorset.RecordCount() = ZERO
{
Risultati.SelectPage(Messaggi.Me())
Messaggio.Messaggio := MSG Nessun Record
Tabella.Visible := False
}
else // La query ha restituito almeno un record
{
int f = 0 //
IDPanel pannello = null //
//
// Mostro la pagina del risultato tabellare
Tabella.Visible := True
Risultati.SelectPage(Tabella.Me())
Messaggio.Messaggio := Empty String
//
recorset.MoveFirst()
while NOT(recorset.EOF())
...
pannello := Tabella.IDPanel()
//
f := ZERO
while f < pannello.FieldsCount()
...
}
}
else // Se è stato richiesto uno statement non query
...
}
catch // L'esecuzione non è andata a buon bine
...
}
// Esegue la query
// ***************
public void QueryAnalyzer.Esegui()
{
// Imposto il tempo di timeout di esecuzione
NorthwindDB.Timeout := Query.Timeout
//
// Svuoto il risultato precedente
delete from Risultato
//
try
{
// Se è stata richiesta una query
if Lower(Left(TrimLeft(Query.Query), C6)) = select
{
Recordset recorset = null //
//
// Imposto il numero massimo di righe ed eseguo la query
NorthwindDB.MaxRows := Query.MaxRows
recorset := NorthwindDB.SQLQuery(Query.Query)
//
// Se la query non ha restituito nessun record
if recorset.RecordCount() = ZERO
{
Risultati.SelectPage(Messaggi.Me())
Messaggio.Messaggio := MSG Nessun Record
Tabella.Visible := False
}
else // La query ha restituito almeno un record
{
int f = 0 //
IDPanel pannello = null //
//
// Mostro la pagina del risultato tabellare
Tabella.Visible := True
Risultati.SelectPage(Tabella.Me())
Messaggio.Messaggio := Empty String
//
recorset.MoveFirst()
while NOT(recorset.EOF())
...
pannello := Tabella.IDPanel()
//
f := ZERO
while f < pannello.FieldsCount()
...
}
}
else // Se è stato richiesto uno statement non query
...
}
catch // L'esecuzione non è andata a buon bine
...
}
- Per comporre la query SQL inserendo dei valori ottenuti dall'utente, è obbligatorio utilizzare la funzione ToSQL, per evitare problemi di sicurezza.
- L'uso di questo comando impedisce l'adattamento automatico della query al database eseguito da IN.DE durante le modifiche al progetto, quindi deve essere usato solo se necessario.
Ultima modifica: 24/03/2021 / Validità: da 7.0.3200