VB.Net Ado Data Adapter ???

cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 - 2 mai 2008 à 01:55
aserf Messages postés 114 Date d'inscription lundi 15 avril 2002 Statut Membre Dernière intervention 1 juillet 2011 - 2 mai 2008 à 15:39
Bonjour,
J'ai posé la question hier mais je n'ai aps eu de réponse concluante...Mais j'ai su que ma requête SQL est OK


Je veux insérer une nouvelle ligne dans ma BD Access


J'ai essayé ma requête dans ACCESS et ca fonctionne mais pas dans VB.Net
J'ai toujours un message d'erreur me disant que j'ai un erreur de syntaxe dasn l'instruction INSERT INTO


Ce que je trouve bisare c'est que j'utilise une reqête pratiquement semblable (sans espace entre les variable) dans un autre programme et
tout fonctionne très bien.


D'où vient mon problème ???


Voici ma requête SQL
où No1 (String) est une variable défini ailleur dans le prog et n'est pas vide (elle contient une info)
T (String) est une variable défini ailleur dans le prog et n'est pas vide (elle contient une info)
No est numérique
Roul est Oui/Non
et les autre colonnes sont en texte
Req = "INSERT INTO Planim (NO1,NO2,SU,R,T,NO,ROUL,MI) VALUES ('" & _
        No1 & "','" & Me.txtNo2.Text & "','" & Me.txtSu.Text & "','" & Me.cbxR.Text & "','" & _
        T & "'," & Me.txtNo.Text & "," & Roul & ",'" & Me.txtMi.Text & "')"


.......


        DataA = New OleDbDataAdapter(Req, SourceOle)
        Dim DataS As New DataSet
        DataA.Fill(DataS, Planim) 'Ici est l'erreur
        Dtt = DataS.Tables(Planim)


Merci de votre aide

8 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
2 mai 2008 à 09:02
Bonjour

Un conseil clair, évite d'utiliser des saisies directement sans les controler auparavant.

Tu peux faire comme moi, utiliser une fonction :

public function GetValue(byval pValue as String) as string
if pvalue is nothing then pvalue=""
return """"+pvalue.replace("""","""""")+""""
end function

public function GetValue(byval pValue as integer) as string
return cstr(pvalue)
end function
...

Et comme ça ta chaine devient :
Req = "INSERT INTO Planim (NO1,NO2,SU,R,T,NO,ROUL,MI) VALUES (" & _
        GetValue(No1) & "," & GetValue(Me.txtNo2.Text) & "," & GetValue(Me.txtSu.Text) & "," & GetValue(Me.cbxR.Text) & "," & _
        GetValue(T) & "," & GetValue(Me.txtNo.Text) & "," & GetValue(Roul) & "," & GetValue(Me.txtMi.Text) & ")"

En plus cela t'obligera a typer fortement tes variables.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
aserf Messages postés 114 Date d'inscription lundi 15 avril 2002 Statut Membre Dernière intervention 1 juillet 2011
2 mai 2008 à 09:59
Salut,

Pour juste executer une requette tu n'es pas obliger de passer par un dataset ...
si tu veux pas te compliquer la vie, j'ai developper un outils qui te mapp le code (www.database2code.com), ensuite tu as juste des fonctions et des class a manipuler a la place de requette sql, sa te permet d'avoir l'intelisens sur les champs directement dans le code.

Autrement tu as aussi les schema dans .net qui te permet de fair des dataset type.

un exmple de fonction qui vas executer ta requette sql.

Public
Function Execute(
ByVal pCommandTexte
As
String)
as
Integer

Dim lEnr
As Data.OleDb.OleDbCommand

Try

   If BaseDonne.State = ConnectionState.Closed
Then BaseDonne.Open()   lEnr =

New Data.OleDb.OleDbCommand(pCommandTexte, BaseDonne)
   

   Return lEnr.ExecuteNonQuery()

Catch ex
As Exception

   Throw
New Exception(
"Une erreur est survenu lors de l'execution de la requette." & vbCrLf & vbCrLf & ex.Message & vbCrLf & vbCrLf & pCommandTexte)

Finally   lEnr =

Nothing

End
Try

End
Function

Développement Rapide PHP / VBNET -> www.database2code.com
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
2 mai 2008 à 11:29
Bonjour

En effet, j'avais pas vu que c'était une insertion, je pensais que c'était un SELECT.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
2 mai 2008 à 12:52
Merci à vous deux..

Je vais regarder cela...

Mais ce qui me "chicotte" (me trouble) c'est que j'utilise un code pratiquement semblable et ca fonctionne.

Mon problème pourrait-il venir de ma base Access ???

merci encore
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
2 mai 2008 à 13:42
Bonjour

Si l'erreur se reproduit, regarde la valeur de ta variable Req.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
aserf Messages postés 114 Date d'inscription lundi 15 avril 2002 Statut Membre Dernière intervention 1 juillet 2011
2 mai 2008 à 14:09
Salut,

Normalement non,
je travail avec des bases de donnée access/sql server/mysql et cela ne me pose aucun probleme.
Le code que je t'es envoyer ne marche pas ?

Développement Rapide PHP / VBNET -> www.database2code.com
0
cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
2 mai 2008 à 15:25
aserf

J'ai essayé ton code...

Mais BaseDonne je  le remplce pas quoi ??? pour que ca fonctionne ?

J'ai essayé un truc du genre mais ca marche pas...
peux-tu m'aider un peu..

merci
Dim

SourceConnect
As
String =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath &
"\Plans_Cadastre.mdb"If

SourceConnect.State = ConnectionState.Closed
Then SourceConnect.Open()
0
aserf Messages postés 114 Date d'inscription lundi 15 avril 2002 Statut Membre Dernière intervention 1 juillet 2011
2 mai 2008 à 15:39
Base de donnée est ta class base de donnée
Public

BaseDonne
AsNew
Data.OleDb.OleDbConnection

ensuite la fonction qui permet de ce connecter a la abse de donnée

Sub ConnectACCESS_(
ByVal CheminBaseDonne
As
String,
Optional
ByRef pLogin
As
String =
"",
Optional
ByRef pPassword
As
String =
"",
Optional
ByVal pSkipCreateTP
As
Boolean =
False)

Dim sConnect
As
String =
""

' définir les chaînessConnect =

"Provider=Microsoft.Jet.OLEDB.4.0;"

If pLogin <>
""
ThensConnect = sConnect &

"User ID=" & pLogin &
";"sConnect = sConnect &

"Password='" & pPassword &
"';"

End
IfsConnect = sConnect &

"Data Source=" & CheminBaseDonne &
";"

' ouvrir la connexionBaseDonne.ConnectionString = sConnect

BaseDonne.Open()

End
Subet ensuite tu utilise la fonction execute que je t'est donnée precedement,
Si tu veux pas te compliquer la vie, talecharge www.database2code.com, ce soft te fera tout, et sur le site tu as des exemples.
le code que je te donne est le code generer par l'application,

Développement Rapide PHP / VBNET -> www.database2code.com
0
Rejoignez-nous