Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb intégration données "chaine" sous Access 97

1 réponse
Avatar
Twitzig
Voilà mon problème:

Une base de données Access 97 (version imposée par le client)
Dans cette base, une table, contenant, entre autres la colonne "lot" dont
les caractéristiques sont les suivantes:

Lot Texte 10
AllowZeroLength: Vrai
Attributs: Longueur variable
ColumnHidden: Faux
ColumnOrder: Défaut
ColumnWidth: Défaut
DisplayControl: Zone de texte
N° d'ordre: 2
Required: Faux
Séquence: Général
Source enreg.: Lot
Table source: SuiviAmiante_national

Cette table est alimentée grace à un module VBA, qui analyse le contenu d'un
fichier CSV

Voici les extraits "significatifs" du module

Dim lot As String
...
pos_semicolon = InStr(1, str_read, search_char)
end_char = pos_semicolon - 1
' On récupère le lot
If end_char = 0 Then
lot = ""
Else
lot = Mid(str_read, 1, end_char)
End If
...
Dbs.Execute "INSERT INTO suiviamiante_national VALUES (" & region & ","
& lot & _
",'" & libelle_ut & "','" & UT & "'," & batiment
& ",'" & type_batiment & _
"','" & logement_collectif & "','" &
emploi_batiment & "','" & categorie_surface & _
"'," & surface & ",'" & proprietaire & "'," &
ajout_batiment & "," & retrait_batiment & _
",'" & observations & "','" & date_maj & "'," &
avancement & "," & fr_transmise_occupants & _
"," & amiante & ",'" & commentaire_repereur &
"','" & commentaire_cra & "','"& commentaire_assistant & _
"'," & visite_partielle & ")"


Mon problème est le suivant:

La colonne "lot" contient, en général, des données numériques à 4 chiffres
Elle est cependant prévue, comme décrit ci-dessus, pour traiter des données
alphanumériques.
Cependant, dans le fichier ci-dessous

Lot;Libelle_UT;UT;Batiment;Type_batiment;Log_collectif;Emploi_bat;Cat_surface;surface;proprietaire;ajout_bat;retrait_bat;observat;date_maj;avancement;fr_transmise;amiante_degradee;comm_reper;comm_cra;comm_assist;partiel
XXXX;MOISSY CRAMAYEL ENTREPOT SERNAM;008388B;1;BAT FRET-ENTREPOT;0; ;+ de
300;2750; ;1;0; ;28/11/2005;4;0;0; ; ; ;0

le traitement de la ligne part en erreur '3061' (trop peu de paramètres, 1
attendu) lors de l'insert sur la ligne contenant comme lot "XXXX"
Si je remplace dans le fichier CSV "XXXX" par un nombre, tout se passe
correctement

NB La ligne contenant "XXXX" est la dernière d'un fichier en contenant
environ 2000. Si je crée un fichier avec simplement la ligne d'en-têtes et la
ligne en cause, le pb est le même.


Il semblerait que celà ressemble à "l'interprétation" que fait certaines
fois Access lors d'importation de fichiers Excel.
Le seul pb est que, dans mon cas, le type de données à traiter est
clairement (du moins je le pense) explicité

Quelqu'un aurait il une explication logique à ce phénomène, et
éventuellement des idées pour le corriger?

D'avance merci

1 réponse

Avatar
3stone
Bonjour aussi,

"Twitzig"
| Une base de données Access 97 (version imposée par le client)
| Dans cette base, une table, contenant, entre autres la colonne "lot" dont
| les caractéristiques sont les suivantes:

[...]

| ...
| Dbs.Execute "INSERT INTO suiviamiante_national VALUES (" & region & "," & lot & ",'" &
libelle_ut & "','" & UT & "'," & batiment
| & ",'" & type_batiment & _



Assez touffu comme écriture... mais...


Si lot doit être traité comme alpha, il faut essyer en ajoutant
les (') quotes (quillemets simples) autour de la variable...


Values (" & region & ",'" & lot & "','" & libelle_ut &



--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/