Limitation à 256 caractères....

Résolu
djul33 Messages postés 13 Date d'inscription mardi 21 février 2006 Statut Membre Dernière intervention 15 novembre 2006 - 4 sept. 2006 à 14:26
djul33 Messages postés 13 Date d'inscription mardi 21 février 2006 Statut Membre Dernière intervention 15 novembre 2006 - 8 sept. 2006 à 13:56
Bonjour,
Lorsque j'éxécute l'instruction suivante:

Set Rst = Cnx.Execute("SELECT 'INSERT  INTO USERS (USER_ID, Login, MDP, Nom, Prenom, Adresse, Adresse1, Commune, Pays, EMail, Activation_logo, Desactivation_logo, Niveau, Profil, Ok, Commentaire, Statut, CP, Dateconnexion) VALUES (' & USER_ID & ', ''' & Login & ''',''' & MDP & ''',''' & Nom & ''',''' & Prenom & ''',''' & Adresse & ''',''' & Adresse1 & ''',''' & Commune & ''',''' & Pays & ''',''' & EMail & ''',''' & Activation_logo & ''',''' & Desactivation_logo & ''',' & Niveau & ',''' & Profil & ''',' & Ok & ',''' & Commentaire & ''',''' & Statut & ''',''' & CP & ''', ''' & Dateconnexion & ''');' FROM Utilisateurs;")

While Not Rst.EOF
            Print #1, Rst.Fields(0)
            Rst.MoveNext
Wend

...mes chaînes de résultat sont toutes coupées à 256 caractères... Seulement je me resers de ces lignes pour implémenter une nouvelle table.
Quelqu'un connaitrait-il l'astuce pour résoudre ce problème?
Merci

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
4 sept. 2006 à 20:05
PS : Le "From Utilisateurs", il sert à quoi ?
Où utilises-tu les champs de cette table dans ta requète ?
J'ai peut-être fausse route ...
Que sont tes variables USER_ID, Login, MDP ... ?
Des TextBox de ton appli ou des champs de ta table Utilisateurs ?
Si c'est le 2eme cas, la syntaxe que je t'ai proposée n'est pas correcte. Il faut rester dans le monde SQL tout au long de la syntaxe et rappeler le nom de la table pour faire référence aux champs. L'astuce consiste à remplacer le nom de la table Utilisateurs par T1, plus court à écrire :
"SELECT INSERT  INTO USERS (USER_ID, Login, MDP, Nom, Prenom, Adresse, Adresse1, Commune, " & _
   "Pays, EMail, Activation_logo, Desactivation_logo, Niveau, Profil, Ok, Commentaire, " & _
   "Statut, CP, Dateconnexion) " & _
  "VALUES (T1.USER_ID, T1.Login, T1.MDP, T1.Nom, T1.Prenom, " & _
   "T1.Adresse, T1.Adresse1, T1.Commune, T1.Pays, T1.EMail, " & _
   "T1.[Activation_logo], T1.[Desactivation_logo], T1.Niveau, T1.Profil, " & _
   "T1.Ok, T1.Commentaire, T1.Statut, T1.CP, T1.Dateconnexion)" & _
  "FROM Utilisateurs T1;"

ou
  "FROM Utilisateurs As T1;"   je ne suis pas sûr de la syntaxe sous Access

Dans ce cas (entièrement sous SQL), plus la peine de se torturer avec les ' et les ", mais il faut impérativement que les champs soient de même type.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
4 sept. 2006 à 19:55
Salut
256 caractères pour afficher le Fields(0) qui est USER_ID ?

Des choses bizarre dans ta syntaxe SQL :
Un ' en trop devant le INSERT
Ne confond pas le ' de séparation sous SQL avec le " sous VB (et deux ' ne font pas un ")
Un coup tu mets bien un ' suivi d'un " pour repasser sous VB, un autre coup, tu ne le fais pas. Bizarre.
Rappel :
- Les champs (*) de type Texte doivent être encadrés par des '
- Les champs (*) de type Date, encadrés par des #
- Les champs (*) numériques : pas d'encadrement
(*) Type de champ tels que définis dans la table de ta DB
Essaye cette version corrigée :
"SELECT INSERT  INTO USERS (USER_ID, Login, MDP, Nom, Prenom, Adresse, Adresse1, Commune, " & _
   "Pays, EMail, Activation_logo, Desactivation_logo, Niveau, Profil, Ok, Commentaire, " & _
   "Statut, CP, Dateconnexion) " & _
  "VALUES (" & USER_ID & ",'" & Login & "','" & MDP & "','" & Nom & "','" & Prenom & "','" & _
   Adresse & "','" & Adresse1 & "','" & Commune & "','" & Pays & "','" & EMail & "','" & _
   Activation_logo & "','" & Desactivation_logo & "'," & Niveau & ",'" & Profil & "'," & _
   Ok & ",'" & Commentaire & "','" & Statut & "','" & CP & "',#" & Dateconnexion & "#)" & _
  "FROM Utilisateurs;"
Ici : Tous les champs sont de type texte, sauf :
numériques : USER_ID, Niveau, Ok
Date : Dateconnexion
Bizarre que CP soit de type texte

De plus, je te conseille fortement d'utiliser des crichets [ et ] pour encadrer les noms des champs qui comportent des caractères spéciaux comme les accents, les espaces ou les signes _ qui est un caractère de remplacement en SQL. Exemple : la 2eme ligne
   "Pays, EMail, [Activation_logo], [Desactivation_logo], Niveau, Profil, Ok, Commentaire, " & _

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0
djul33 Messages postés 13 Date d'inscription mardi 21 février 2006 Statut Membre Dernière intervention 15 novembre 2006
8 sept. 2006 à 13:56
Effectivement la 2ème solution est parfaite :)
0
Rejoignez-nous