Requete d'insertion

Signaler
Messages postés
15
Date d'inscription
mercredi 16 février 2005
Statut
Membre
Dernière intervention
15 août 2006
-
Messages postés
15
Date d'inscription
mercredi 16 février 2005
Statut
Membre
Dernière intervention
15 août 2006
-
Bonjour tout le monde
Voila j'ai écris une requête d'insertion qui quand je saisi les données et que je valide ,m'affiche :type de donnée incompatible.Les données sont de type entier et texte.Quand je saisi par exemple le nombre 1 partout ça marche mais quand j'insers du texte et du numerique ca se complique.J'aimerais avoir une idée de comment contourner ce probleme.
Merci de m'aider. 

6 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
Difficile de te répondre avec aussi peu d'élément ...
Est-ce une erreur VB ou une erreur SQL ?
Rappel de la norme dans la syntaxe de ta requète SQL :
Si le type de champ (*) est :
- Texte : Il faut encadrer les données avec des guillemets simples : "... Values ('mon texte à insérer')"
- Date : L'encadrement est le dièse : " ... Values (#01/01/2006#)"
- Si est numérique, pas d'encadrement : "... Values(32.57)"
(*) tel que déclaré dans ta DB

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
Messages postés
15
Date d'inscription
mercredi 16 février 2005
Statut
Membre
Dernière intervention
15 août 2006

Bonjour
vous avez raison c'est vraiment très vague aussi voici mon code:



Private Sub Command3_Click()<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>





Set cn = New ADODB.Connection





Set rs = New ADODB.Recordset





Set cmd = New ADODB.Command





db = App.Path & "\disquette.mdb"





With cn





cn.Provider = "Microsoft.jet.oledb.4.0"





cn.ConnectionString = App.Path & "\disquette.mdb"





cn.Open





End With





On Error GoTo gesterr





Set rs = New ADODB.Recordset





Dim code_btr As String





Dim nbr_crp As Integer





Dim nbr_btr As Integer





Dim nbr_atr As Integer





Dim num_btr As Integer





Dim date_trans As String





Dim code_atr As String





Dim type_atr As String





Dim code_id_emetteur As String





Dim date_atr As String





Dim num_atr As Integer





Dim num_crp As Integer





Dim code_crp As String





Dim type_crp As Integer





Dim sens_oper As Integer




Dim nature_du_compte As Integer



Dim type_decla As Integer





Dim reglement As Integer





Dim nom_id As String





Dim code_id As String





Dim ref_int_id As String





Dim code_oper As String





Dim date_oper As String





Dim nbr_oper As Long





Dim nom_bene As String





Dim code_bene As String





Dim code_agent As String





Dim code_pays As String





Dim mont_oper As Long





Dim contre_valeur_cfa As Integer





Dim code_dev As String





Dim code_eco As String





Dim type_oper As String





sens_oper = Option11.Value





sens_oper = Option12.Value




nature_du_compte = Option9.Value


nature_du_compte = Option10.Value



type_decla = Option7.Value





type_decla = Option8.Value





reglement = Option5.Value





reglement = Option6.Value





type_crp = Option1.Value





type_crp = Option2.Value





type_crp = Option3.Value





type_crp = Option4.Value





num_crp = Text1.Text





code_crp = Text2.Text





nom_id = Text3.Text





code_id = Text4.Text





ref_int_id = Text5.Text





code_oper = Text6.Text





date_oper = Calendar1.Value





nbr_oper = Text8.Text





nom_bene = Text9.Text





code_bene = Text10.Text





code_agent = Text11.Text





code_pays = Text12.Text





mont_oper = Text13.Text





contre_valeur_cfa = Text14.Text




code_dev = Text15.Text



code_eco = Text16.Text





date_atr = Calendar2.Value





num_atr = Text18.Text





type_oper = Text19.Text





code_btr = Text21.Text





nbr_crp = Text24.Text





nbr_btr = Text22.Text





nbr_atr = Text20.Text





num_btr = Text23.Text





date_trans = Text25.Text





code_atr = Text7.Text





type_atr = Text17.Text





Text1.Text = ""





Text2.Text = ""





Text3.Text = ""





Text4.Text = ""





Text5.Text = ""





Text6.Text = ""





Calendar1.Value = ""





Text8.Text = ""





Text9.Text = ""





Text10.Text = ""





Text11.Text = ""





Text12.Text = ""





Text13.Text = ""





Text14.Text = ""





Text15.Text = ""





Text16.Text = ""





Text7.Text = ""





Text17.Text = ""





Text20.Text = ""





Text21.Text = ""





Text22.Text = ""





Text23.Text = ""





Text24.Text = ""





Text25.Text = ""





Calendar2.Value = ""





Text18.Text = ""





Text19.Text = ""





If Option1.Value Then





type_crp = 1





End If





If Option2.Value Then





type_crp = 2





End If





If Option3.Value Then





type_crp = 3





End If





If Option4.Value Then





type_crp = 4





End If





If Option5.Value Then





reglement = 1





End If





If Option6.Value Then





reglement = 2





End If





If Option7.Value Then





type_decla = 1





End If





If Option8.Value Then





type_decla = 2





End If





If Option9.Value Then




nature_du_compte = 1



End If





If Option10.Value Then




nature_du_compte = 2



End If





If Option11.Value Then





sens_oper = 1





End If





If Option12.Value Then





sens_oper = 2





End If





mont_oper = CLng(mont_oper)




contre_valeur_cfa = CLng(contre_valeur_cfa)


cmd = "insert into tabcrp(code_crp,type_crp,date_atr,num_atr,num_crp,code_id,ref_int_id,date_oper,reglement,type_decla,type_oper,nom_bene,code_bene,code_agent,code_pays,nature_du_compte,sens_oper,code_dev,mont_oper,contre_valeur_cfa,code_eco,nbr_oper,code_btr,nbr_btr,code_id_emetteur,nbr_crp,code_atr,type_atr,nbr_atr,date_trans,num_btr )" & _


"values('" & code_crp & "','" & type_crp & "','" & date_atr & "','" & num_atr & "','" & num_crp & "','" & code_id & "','" & ref_int_id & "','" & date_oper & "','" & reglement & "','" & type_decla & "','" & type_oper & "','" & nom_bene & "','" & code_bene & "','" & code_agent & "','" & code_pays & "','" & nature_du_compte & "','" & sens_oper & "','" & code_dev & "','" & mont_oper & "','" & contre_valeur_cfa & "','" & code_eco & "','" & nbr_oper & "','" & code_btr & "','" & nbr_btr & "','" & code_id_emetteur & "','" & nbr_crp & "','" & code_atr & "','" & type_atr & "','" & nbr_atr & "','" & date_trans & "','" & num_btr & "')"



cn.Execute cmd





cn.Close




gesterr:


MsgBox Err.Description


End Sub


Merci pour votre attention!!!
Messages postés
381
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
5 septembre 2010
3
Salut,

Ton code est assez lourd à lire par contre pour ton problème (cf message de jack) il faut bien prendre en compte la syntaxe d'une requete sql :


Par exemple pour ta requete tu as tout mis entre cote tes valeurs. Par exemple, num_atr et num_crp ne doivent pas être entre cote :
 ..." & num_crp & ", " & code_id & "

Petit conseil : essaye de respecter les espaces entre les valeurs : valeur1 + virgule + espace + valeur2



 Fiko ;-)

Proverbe chinois : Connaître son ignorance est la meilleur part de la connaissance./FONT>
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Re
En effet, tu as mis des " ' " partout : Il faut connaitre le type de chaque champ TEL QUE DECLARE DANS TA TABLE (texte, numérique ...) pour déterminer s'il faut ou pas des ' ou des #
- 1ere "With cn" : Il ne sert à rien puisque dans les lignes qui suivent, tu répètes cn.Provider ...
- 2ème "Set rs = New ..." : Inutile, tu l'as déjà fait au dessus
- Fin du code : Après le cn.Close, tu fais un MsgBox avec le code d'erreur.
  Dans les meilleurs cas, le code d'erreur sera 0 et ta MsgBox n'affichera rien de bien clair
   --> Ajoute un "Exit Sub" après ton "cn.Close"
- Fiko a raison : Ajoute des espaces là où il t'a dit, mais aussi après chaque parenthèse
  Exemple : dans ton code, tu fais une coupure VB apèrs Tabcrp et tu enchaines direct avec "(codecrp ..."
  Ce qui donne "   Insert Into Tabcrp(codecrp..."  --> Il se peut que l'interprèteur n'accepte pas --> Espace avant (
  Idem avant "Values"

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
Messages postés
15
Date d'inscription
mercredi 16 février 2005
Statut
Membre
Dernière intervention
15 août 2006

Bonsoir
Merci pour vos conseils  je ne suis pas sur mon pc mais dès ce soir je vais m'y mettre je vous donnerais la suite.
Merci beaucoup pour votre aide!






 
Messages postés
15
Date d'inscription
mercredi 16 février 2005
Statut
Membre
Dernière intervention
15 août 2006

Bonjour
c'est enfin moi qui reviens,j'ai essayé ce que vous m'avez dit mais toujour j'ai ce message :type incompatible.
J'ai regardé au niveau de ma base de donnée mais toujours rien.
Merci beaucoup.