Enkele tips bij het importeren van gegevens

(Last Updated On: 30 maart 2018)

Via de Import module kan je in Venice data importeren. De algemene werkwijze kan je in de volgende kbase terugvinden.  Hiervoor heb je een gegevensbestand nodig, en een beschrijvend bestand. Het beschrijvend bestand mapt de stukjes data in het gegevensbestand naar de juiste velden in de Venice database.

Als er iets fout loopt bij het importeren, dan is het niet altijd duidelijk waar het nu aan ligt. Het is mogelijk dat de structuur van het gegevensbestand wel klopt met het bijhorende beschrijvend bestand, maar dat de gegevens inhoudelijk niet correct zijn. Hierdoor kan Venice een validatiefout geven. Bv. je probeert klanten in te lezen, maar de firmanaam is niet ingevuld. In Venice kan je geen klanten aanmaken zonder een firmanaam, in zo’n geval krijg je dus een duidelijke foutmelding.

Het is echter ook mogelijk dat er een fout is gemaakt bij het opmaken van het beschrijvend bestand, waardoor de mapping in het honderd loopt. Een probleem dat we af en toe zien, is dat er iets mis loopt met het afbakenen van de velden, waardoor Venice data in een verkeerd veld probeert te schrijven. In zo’n geval kan je een validatiefout krijgen die je op het verkeerde been zet.

Het is niet altijd even duidelijk waar je precies moet beginnen zoeken in zo’n geval. Gelukkig biedt Venice de mogelijkheid om een logbestand aan te maken tijdens het importeren. Hierdoor kan je zien welke data Venice in welk veld probeert te stoppen, en op welk punt het precies fout loopt. Dit logbestand kan dus veel werk (en tijd) besparen!

Hoe ga je te werk om dit logbestand aan te maken?

  1. Open de registry van Windows (via regedit.exe), en navigeer naar
    HKEY_LOCAL_MACHINE\SOFTWARE\C-Logic (op een 32-bits Windows pc)
    of HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\C-Logic (op een 64-bits Windows pc)
  2. voeg in het rechterpaneel een Tekenreekswaarde (REG_SZ) toe met als naam ImportLog en als waarde Yes.
    importlog
  3. Navigeer naar HKEY_CURRENT_USER\Software\C-Logic
  4. Klik met de rechtermuisknop op C-Logic, en voeg een sleutel toe met als naam Import.
  5. voeg een Tekenreekswaarde (REG_SZ) toe met als naam DebugLog en als waarde map en bestandsnaam (waar u de logfile wil bewaren).
    (de mapnaam moet verwijzen naar een reeds bestaande map waarop u schrijfrechten hebt)
    debuglog
  6. Sluit Venice af en start opnieuw op
  7. Onderaan het importeren venster ziet u nu een extra parameter DebugLog verschijnen:
    importscherm-debug
  8. Vink DebugLog aan, en importeer het gegevensbestand
  9. Als er een foutmelding verschijnt, klik deze dan eerst weg (anders zal het logbestand nog geen gegevens bevatten)
  10. Open nu het logbestand (bv. via notepad). In het logbestand kan u terugvinden welke data Venice in welk veld probeert weg te schrijven. Het logbestand breekt af op de plaats waar er een fout optrad. Zo kan u nagaan waar ongeveer de fout zich voordeed.

Een aantal mogelijke fouten die u zo kan achterhalen:

  • een verschuiving van de velden: de gegevens worden niet ingelezen in de juiste velden
  • fout bij de afbakening van de velden: er wordt maar een stuk van een veld ingelezen, bv. omdat er een probleem is met het veldscheidingsteken
  • het verkeerde type wordt ingelezen: een tekst in een numeriek veld (of omgekeerd)

U kan beter steeds meteen naar het einde van het bestand gaan, want daar zal de meest relevante informatie terug te vinden zijn:

Importing Numeric: @ASL.BaseFinDiscountDocC at 25, 1, length=End Contents="0"
 Importing Numeric: @ASL.BaseNotSubmitDocC at 26, 1, length=End Contents="0"
 Importing Numeric: @ASL.VatDueNormDocC at 27, 1, length=End Contents="0"
 Importing Numeric: @ASL.VatDedNormDocC at 28, 1, length=End Contents="210"
Processing [$Assign.ASL]
 Assign: @ASL.DocType = 0
 Assign: @ASL.TsmNumber = ""
Processing [$Import.ENT], #1
 Importing String : @ENT.Account at 29, 1, length=End Contents="0"
 Importing Numeric: @ENT.AmountDocC at 30, 1, length=End Contents="700000"
 Importing String : @ENT.Remark at 31, 1, length=End Contents="-1000"
Processing [$Assign.ENT]
 Assign: @ENT.IsCredit = 0
Processing [$Import.ENT], #2
 Importing String : @ENT.Account at 32, 1, length=End Contents="1"
 Importing Numeric: @ENT.AmountDocC at 33, 1, length=End Contents="END"
 Importing String : @ENT.Remark at 34, 1, length=End Contents=""