Invantive Cloud App: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter ‘index’)

Een maand verder en weer problemen.

Ik heb de datacontainer opnieuw geautoriseerd en de kink opnieuw aangemaakt.

Als ik nu de applicatie opnieuw uitvoer (via: https://app-online.cloud/apps/68f4fede-0cf9-471a-94c4-84b64d594cef/databases/drukkerij-dirix-exact-online/modules/99cb9c02-8d5f-43d2-85fa-d4afa8b00a56/) krijg ik volgende foutmelding:

An error occured - 5a5583c7-25bc-45d4-b9dd-a908c1fbbdb1 Index was out of range. Must be non-negative and less than the size of the collection. (Parameter ‘index’).

De data lopen van 1/5 tot 1/6.

Wat loopt er mis?

Herautorisatie is te voorkomen door minder dan 30 dagen ruimte tussen twee downloads aan te houden. Dit is een beperking vanuit Exact Online waar we momenteel geen oplossing voor hebben.

M.b.t. de foutmelding: deze zien we terugkomen, maar is niet reproduceerbaar.

Kunt u delegatie geven zoals beschreven op Toegang via delegatie op Invantive Cloud voor consultants ?

Dank, de daadwerkelijke foutmelding is nu zichtbaar:

itgensql160
Row length 4 doesn’t equal the field count 3 on row #0. Type ‘FirehoseResultSet’.

Dit is een interne consistentiecheck waarbij het aantal velden met data afwijkt van het verwachte aantal velden op de tabel act@inmemorystorage (ACT.ID (guid, False), ACT.CODE (string, True), ACT.NAME (string, True)).

Een van de ontwikkelaars zal het probleem verder analyseren.

Om nog onduidelijke reden gaat het specifiek op deze omgeving fout door een aanpassing voor Itgengpr015 bij gebruik tijdelijke tabel voor importeren bestellingen. Een workaround is om

begin
...
    from   sle@inmemorystorage sle
    join   act@inmemorystorage subact
    on     subact.id = sle.orderedby
    join   itm@inmemorystorage itm
    on     itm.id = sle.item
    where  sle.invoiceto = ( select id from act@inmemorystorage where code = p_account_code )
...
end;

te vervangen door

declare
...
  l_act_id            guid;
begin
    select act.id
    into   l_act_id
    from   act@inmemorystorage act
    where  act.code = p_account_code
    ;
...
    from   sle@inmemorystorage sle
    join   act@inmemorystorage subact
    on     subact.id = sle.orderedby
    join   itm@inmemorystorage itm
    on     itm.id = sle.item
    where  sle.invoiceto = l_act_id
...
end;

Hierdoor wordt de sub-query niet meer dankzij de impliciet aanwezige low_cost SQL-hint meteen bij compilatie uitgevoerd.

Deze vraag is automatisch gesloten na tenminste 2 weken inactiviteit nadat een mogelijk passend antwoord is gegeven. Het laatste gegeven antwoord is gemarkeerd als oplossing.

Gelieve een nieuwe vraag te stellen via een apart topic als het probleem opnieuw optreedt. Gelieve in de nieuwe vraag een link naar dit topic op te nemen door de URL er van in de tekst te plakken.