cs_MagDix
Messages postés532Date d'inscriptionlundi 5 juin 2006StatutMembreDernière intervention 6 octobre 2012
-
2 mai 2008 à 01:55
aserf
Messages postés114Date d'inscriptionlundi 15 avril 2002StatutMembreDerniè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)
NHenry
Messages postés15069Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention29 mai 2023158 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
aserf
Messages postés114Date d'inscriptionlundi 15 avril 2002StatutMembreDerniè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
aserf
Messages postés114Date d'inscriptionlundi 15 avril 2002StatutMembreDerniè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
aserf
Messages postés114Date d'inscriptionlundi 15 avril 2002StatutMembreDerniè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