germany1970
Messages postés134Date d'inscriptionmardi 4 mars 2008StatutMembreDernière intervention22 mars 2014
-
14 avril 2011 à 12:03
germany1970
Messages postés134Date d'inscriptionmardi 4 mars 2008StatutMembreDernière intervention22 mars 2014
-
15 avril 2011 à 13:03
Bonjour,
alors je développe avec VB 2005.avec une base de données acess.
je veux avant de valider un nouveau enregistrement il vérifie si le numéro de police existe déjà ou non
merci pour votre aide c'est très urgent
voilà le code que j'ai :
dans le Form_Load
'connexion base de données
conn "provider microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\amc.mdb;"
cnx = New OleDbConnection
cnx.ConnectionString = conn
cnx.Open()
'-----------------------------------------------------------
'exécution de la commande(cmd),
'du dataadapter (dta),
'du dataset(dts),
'de la datatable (dtt)
'sql=>cmd=>dta
'cnx=>cmd
'dta=>dts=>dtt
sql = "select police.* from police"
cmd = New OleDbCommand(sql)
dta = New OleDbDataAdapter(cmd)
cmd.Connection() = cnx
'chargement du DataSet à partir du DataAdapter
dta.Fill(dts, "police")
'chargement de la DataTable à partir du DataSet
dtt = dts.Tables("police")
dans le button-Ok
Private Sub Button16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click
'controle des champs-si un champ n'est pas rempli fin de procédure
'Try
If TextBox1.Text "" Or TextBox2.Text "" Or TextBox3.Text = "" Or TextBox5.Text = "" Or TextBox6.Text = "" Or TextBox7.Text = "" Or TextBox8.Text = "" Or TextBox9.Text = "" Or TextBox10.Text = "" Or TextBox11.Text = "" Or TextBox12.Text = "" Or TextBox13.Text = "" Or TextBox14.Text = "" Or TextBox15.Text = "" Or TextBox16.Text = "" Or MaskedTextBox1.Text = "" Then
MessageBox.Show("Vous devez remplir tous les champs !", "Erreur...", MessageBoxButtons.OK, MessageBoxIcon.Error)
Me.TextBox1.Focus()
Exit Sub
End If
sql = "select police.* from police"
cmd = New OleDbCommand(sql)
dta = New OleDbDataAdapter(cmd)
cmd.Connection() = cnx
'chargement du DataSet à partir du DataAdapter
dta.Fill(dts, "police")
'chargement de la DataTable à partir du DataSet
dtt = dts.Tables("police")
'ajout de la ligne dans le DataSet
dts.Tables("police").Rows.Add(dtr)
'création et exécution du commandbuilder
'pour mettre à jour le DataAdapter
cmdb = New OleDbCommandBuilder(dta)
'mise à jour des données du DataAdapter
'à partir du commandbuilder
dta.Update(dts, "police")
MessageBox.Show("Police ajoutée avec succés", "Administrateur...", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
'on vide le dataset pour le recréer avec
'les nouvelles données
dts.Clear()
dta.Fill(dts, "police")
dtt = dts.Tables("police")
'**********************************************************
'mise à jour de la datagrid
'DataGrid1.SetDataBinding(dts, "produ")
'vider les textbox
Dim frm As New Form1
Me.Close()
frm.Show()
Bonjour, je trouve ton code un peu lourd pour insérer une ligne dans une table, personnellement je préfére coder en direct sans passer par des dataset...
Et le code serait (je ne travaille pas sur ACCESS, alors il y aura surement des modifications de code à faire):
cmd.commandtext "SELECT COUNT(*) FROM POLICE WHERE CODE " + Me.TextBox1.Text
DIM isPresent as boolean iif(cmd.executescalar 0, 0, 1)
if not isPresent then
cmd.commanttext = "INSERT INTO POLICE (...) VALUES (...)"
cmd.executeNonQuery()
else
messagebox.Show("Police deja presente")
endif
germany1970
Messages postés134Date d'inscriptionmardi 4 mars 2008StatutMembreDernière intervention22 mars 20143 14 avril 2011 à 18:41
Bonjour alexander,
premièrement merci de votre inttentyion à mon problème.
alors pour ta remarque en ce qui concerne l'insertion d'un nouveau enregistrement je vous remercie de me donner le code que vous utiliser.
pour le code que vous m'avez donner pour trouver le doublon j'ai une erreure au niveau de cette ligne:
Dim IsPresent As Boolean IIf(cmd.ExecuteScalar 0, 0, 1)
msg d'erreure : aucune valeur donnée pour un ou plusieurs des paramètres requis
merci encore une fois
Bonjour,
Il faut voir si le "executeScalar" retourne bien 0 lorsqu'il n'y a pas de valeurs et non NULL, comme je l'ai dit je ne connait pas les bases de données ACCESS...
germany1970
Messages postés134Date d'inscriptionmardi 4 mars 2008StatutMembreDernière intervention22 mars 20143 15 avril 2011 à 13:03
Bonjour,
je vous remercie infiniment 10/10 ça marche t un génie juste un petit rectif dans cette ligne
cmd.commandtext "SELECT COUNT(*) FROM POLICE WHERE CODE " + Me.TextBox1.Text
il faut mettre :
cmd.CommandText "select count(*) from police where code '" & TextBox1.Text & "'"