.Da ieri mattina cerco di risalire ad un errore che si manifesta durante la Open del mio DB. Sembra un errore logico, ma non ho saputo riconoscere alcuna possibile anomalia.
L'errore è segnalato con la finestra allegata.
Riporto pure il passo di programma incriminato.
function FaiGridVoceSotCto(coVoSotCto, nomiVoce: string): String;
. . .
coVoCtoPriCas:= LeftStr(coVoSotCtoCassa, 6) + '000';
sql:= 'SELECT piancont.NomeVoce FROM piancont WHERE piancont.NumVoce = ' + coVoSotCtoCassa;
swOpenErro:= OpenDbZQuery1(sql);
if not swOpenErro then
begin
Form6.ZReadOnlyQuery1.First;
nomiVoceCassa:= Form6.ZReadOnlyQuery1.FieldByName('NomeVoce').AsString; // Legge il NomeVoce del SottoConto di Cassa
Form6.ZReadOnlyQuery1.Close;
sql:= ' SELECT piancont.NomeVoce FROM piancont WHERE piancont.NumVoce= ' + coVoCtoPriCas;
swOpenErro:= OpenDbZQuery1(sql);
if not swOpenErro then
begin
Form6.ZReadOnlyQuery1.First;
nomiVoceCassa:= (Form6.ZReadOnlyQuery1.FieldByName('NomeVoce').AsString) + nomiVoceCassa + '.'; // Legge il NomeVoce del Conto Principale di Cassa
Form6.ZReadOnlyQuery1.Close;
end;
//------------------------------------------------------------ FIN QUI funziona benissimo
sql:= 'SELECT movimgg.DtCoMovgg, movimgg.DescrMovvgg, movimgg.ImpMovvgg, movimgg.MonMovvgg FROM movimgg ';
sql:= sql + 'WHERE movimgg.DtCoMovgg >= ' + dataIni + ' AND movimgg.DtCoMovgg <= ' + dataFin;
sql:= sql + ' AND movimgg.CoVocMovvgg = coVoSotCtoCassa ORDER BY movimgg.CoVocMovvgg, movimgg.DtSolMovgg, movimgg.OraSolMovgg';
WriteLn('sql = "' + sql + '"');
WriteLn('coVoSotCtoCassa = "' + coVoSotCtoCassa + '"');
//----------------------------------------------------------------------- istruzioni in osservazione -----------------------------------------------------------------
Form6.ZConnect.Database := dbCorr;
Form6.ZReadOnlyQuery1.SQL.Text := sql;
try
Form6.ZReadOnlyQuery1.Open; // <----------------------- questa Open NON FUNZIONA
except
on E: Exception do
begin
WriteLn('ERRORE nella OPEN del ContabFamdb (sql: "' + sql + '" ' + IntToStr(E.HelpContext) + ': ' + E.Message);
swOpenErro:= True;
end;
end;
end;
if not swOpenErro then
begin
nuRec:= Form6.ZReadOnlyQuery1.RecordCount;
end;
Form6.ZReadOnlyQuery1.Close;
. . .
Non cerco la soluzione al problema. Vorrei capire cosa andare a guardare a cui non ho pensato:
1) ho verificato la stringa sql eseguendo la query con DBBROWSER for SQLite. --> Legge correttamente 64 record
2) ho guardato tutto il percorso eseguito dal programma, verificando che tutte le Open fossero seguite dalle rispettive Close, e ci sono tutte.
ho verificato il nome del DB fornito a ZConnect (dbCorr = '/media/dirdati/dativari/contabfam/ContabFamdb_prove') --> Corretto
:'(