Scopo
Questa procedura permette di recuperare il tipo di dato di una determinata colonna del Recordset. Può essere utilizzata per recuperare informazioni relative ad una delle colonne di un Recordset restituito, per esempio, dalla funzione SQLExecute. In questo caso, infatti, la struttura del Recordset non è fissata da codice ma dipende dal testo fornito alla SQLExecute.
Sintassi
int tipo = 0 //
//
tipo := RecordsetMetaData.GetFieldType(indice colonna)
//
tipo := RecordsetMetaData.GetFieldType(indice colonna)
Argomenti
Indice Colonna | Indice della colonna di cui si vuole sapere il tipo di dato (da 1 a GetColumnCount) |
Valore di ritorno
Viene ritornato un intero corrispondente al tipo di dato contenuto nella colonna indicata. I possibili valori ritornati da questa funzione sono elencati nella lista valori Data Types.
Esempio di codice
else // La query ha restituito almeno un record
{
int f = 0 //
IDPanel pannello = null //
RecordsetMetaData rsmd = null //
//
// Recupero il metaschema
rsmd := recorset.GetMetaData()
//
// Mostro la pagina del risultato tabellare
Messaggio.Messaggio := Empty String
Risultati.SelectPage(Tabella.Me())
Tabella.Visible := True
//
recorset.MoveFirst()
while NOT(recorset.EOF())
...
pannello := Tabella.IDPanel()
//
f := ZERO
while f < pannello.FieldsCount()
{
if f + ONE <= rsmd.GetColumnCount()
{
pannello.SetFieldVisible(f, True)
pannello.SetFieldCaption(f, recorset.FieldName(f + ONE))
//
// Se è un campo numerico lo allineo a destra
if Decode(rsmd.GetFieldType(f + ONE), Numerici) <> Empty String
{
pannello.SetFieldVisualStyle(f, AllineatoADestra)
}
}
else
{
pannello.SetFieldVisible(f, False)
}
f := f + ONE
}
}
{
int f = 0 //
IDPanel pannello = null //
RecordsetMetaData rsmd = null //
//
// Recupero il metaschema
rsmd := recorset.GetMetaData()
//
// Mostro la pagina del risultato tabellare
Messaggio.Messaggio := Empty String
Risultati.SelectPage(Tabella.Me())
Tabella.Visible := True
//
recorset.MoveFirst()
while NOT(recorset.EOF())
...
pannello := Tabella.IDPanel()
//
f := ZERO
while f < pannello.FieldsCount()
{
if f + ONE <= rsmd.GetColumnCount()
{
pannello.SetFieldVisible(f, True)
pannello.SetFieldCaption(f, recorset.FieldName(f + ONE))
//
// Se è un campo numerico lo allineo a destra
if Decode(rsmd.GetFieldType(f + ONE), Numerici) <> Empty String
{
pannello.SetFieldVisualStyle(f, AllineatoADestra)
}
}
else
{
pannello.SetFieldVisible(f, False)
}
f := f + ONE
}
}
- Se si utilizza un indice non compreso tra 1 e il numero totale di colonne viene generato un errore.
Ultima modifica: 23/03/2021 / Validità: da 8.0.3560