C#: Max Rows e Oracle
copia linkDescrizione del difetto
Se si specificava un valore per la proprietà MaxRows del database o si utilizzava il metodo SetMaxRows dei pannelli e si utilizzava il database Oracle si potevano ottenere errori in alcuni casi.
La gestione della proprietà MaxRows viene eseguita racchiudendo le query di SELECT all'interno del costrutto
select * from ( [SELECT QUERY] ) where rownum<=[MaxRows]Il malfunzionamento era dovuto al fatto che il framework .NET calcola automaticamente gli statement di INSERT, UPDATE e DELETE a partire dagli statement di SELECT ma, a causa di una limitazione del framework .NET, non era in grado di farlo per una query di quel tipo.
Effetti del malfunzionamento
- Se era stato utilizzato il metodo SetMaxRows di un pannello DB si otteneva un errore in inserimento, aggiornamento o cancellazione dei dati.
- Se era attiva la modalità Filtri ricerca avanzati di tipo diverso da "Stato search del pannello" il sistema utilizzava automaticamente la funzionalità MaxRows dato che, in questa modalità, i pannelli non usano lo stato SEARCH ma vanno automaticamente in stato FIND all'apertura. Pertanto anche in questa configurazione si otteneva un errore se si modificavano i dati di un pannello. L'automatismo non si attivava per applicazioni di tipo MOBILE con tema diverso da Ionic (tema Quadro o temi personalizzati di tipo non Ionic).
Soluzioni
Non sono disponibili workaround per le versioni precedenti.
Funzionalità interessate
L'utilizzo della funzionalità MaxRows in pannelli DB in tecnologia C# su database Oracle.
Note
- Malfunzionamento relativo alle richieste di assistenza 001119-2016, 000288-2017, 000794-2017 e 002372-2019.
Ultima modifica: 23/03/2021 / Validità: da 20.0.7800