Recent kreeg ik een vraag van een klant waarom CallPro kolommen met inhoud “1+3” niet kon importeren. Bij navraag bleek dat gebruik wordt gemaakt van een Excel bestand waar een kolom aanwezig is die gebruikt wordt om meerdere checkbox keuzes te zetten tijdens een update import van een bellijst. Alle velden in CallPro waren van type karakter en bij geen enkele andere kolom ging het fout alleen deze speciale kolom leek wel waarden “1” en “3” te importeren maar zodra er meerdere keuze in het veld stonden “1+3” of “2+5” of zelfs “2+3+4+8” werd het veld als lege waarde geimporteerd.
In de test omgeving die ik had gemaakt om te kijken waar het dan fout gaat liep ik zelf tegen een ander vreemd problem aan. Bij het importeren werd 1 telefoonnummer leeg geimporteerd. Laat dit nu net het telefoonnummer zijn dat ik had geknipt en plakt uit een bestaande bellijst (050-7070720). Hoewel dit ogenschijnlijk ongerelateerd was aan het gemelde probleem bleek na enig proberen de oorzaak wel hetzelfde te zijn. Waar het precies fout gaat is mij niet duidelijk maar het lijkt of iets van Excel, of iets van de Excel ODBC driver te zijn.
Wat gebeurd er?
Kennelijk wil Excel/ODBC slim zijn en analyseert de kolom met waarden (die bij cel eigenschappen in Excel op getalnotitie: Standaard staat). Als het merendeel (van de 5 data regels in mijn testbestand) cijfers bevatten maakt Excel/ODBC er een numerieke kolom van. Alle data-regels in het Excel bestand die dan inhoud hebben die niet numeriek is wordt dan doorgegeven als lege waarde! In dit geval dus de waarden met een + teken erin.
De oplossing
Om te voorkomen dat Excel deze foute slimmigheid toepast moet de kolom in Excel op getalsnotitie: Tekst worden gezet. Hiermee wordt voorkomen dat er een foute keuze gemaakt wordt en worden alle data-regels in het Excel bestand als tekst geinterpreteerd.
Hoewel het hier ging om een speciale kolom kwam ik er zelf bij het etsten achter dat het voor elke kolom geldt, ook het telefoonnummer, of een huisnummer kolom. Het is dus altijd verstandig om kolommen met tekst als Tekst te markeren in Excel zodat niet een huisnummer “21a” als leeg wordt ingelezen! of een telefoonnummer “050-7070720” ineens als leeg doorkomt!
Voor zover we hebben nu kunnen nagaan is de enige oplossing door het in Excel al goed in te stellen en hebben wij er nadat de gegevens bij Callpro binnenkomen via de ODBC hier geen controle op, het is dan al te laat.
[…] Zoals we eerder hebben laten zien heeft de Excel ODBC driver soms vreemde bijverschijnselen (Excel import gaat in de fout). Ook nu behandelen we gedrag dat onverwachtte effecten kan hebben tijdens het […]