olman50
Messages postés4Date d'inscriptionmercredi 2 juin 2010StatutMembreDernière intervention10 juin 2010
-
2 juin 2010 à 11:17
cs_jemaoui
Messages postés5Date d'inscriptionlundi 20 décembre 2010StatutMembreDernière intervention29 avril 2011
-
20 déc. 2010 à 01:46
[Aperçu de votre message]
Je souhaite afficher un message d'erreur quand les tables Groupe et Classe sont vides. J'ai déjà cherché pas mal et je n'ai rien trouvé de bien voila pourquoi j'ai besoin de votre aide. Merci d'avance
voici mon code :
Private Sub btnenr_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnenr.Click
Dim v1 As Object = 0
Dim v2 As Object = 0
Dim v3 As Object = 0
Dim nomE As String
Dim prenomE As String
Dim lv1 As String = 0
Dim lv2 As String = 0
If Me.txtnumeleve.Text = "" Or _
Me.txtnomeleve.Text = "" Or _
Me.txtprenomeleve.Text = "" Or _
Me.txtlv1.Text = "" Or _
Me.txtlv2.Text = "" Or _
Me.txtnumclasse.Text = "" Or _
Me.txtnumgroupe.Text = "" Then
MsgBox("Vous devez remplir tous les champs. ", MsgBoxStyle.Information, "Info...")
Me.txtnomeleve.Focus()
Exit Sub
ElseIf Not IsNumeric(v1) Or Not IsNumeric(v2) Or Not IsNumeric(v3) Then
MsgBox("Veuillez saisir un numéro dans la case numéro. ", MsgBoxStyle.Information, "Info...")
Exit Sub
End If
'ouverture de la connection(à partir du répertoire de l'application)sur la même ligne
cnxstr "provider microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\base.mdb;"
cnx = New OleDbConnection
cnx.ConnectionString = cnxstr
cnx.Open()
'Création de la requête sql
sql = "select Groupe.* from Groupe"
'Création de la commande et on l'instancie (sql)
cmd = New OleDbCommand(sql)
'Création du dataadapter (dta) et on l'instancie (cmd)
dta = New OleDbDataAdapter(cmd)
'On instancie la commande (cmd) à la connection (cnx)
cmd.Connection() = cnx
'On charge le dataset (dts) grace à la propriété fill du dataadapter (dta)
dta.Fill(dts, "Groupe")
'On charge la datatable (dtt) grace à la propriété tables du dataset (dts)
dtt = dts.Tables("Groupe")
While rownum < dtt.Rows.Count
If txtnumgroupe.Text = dtt.Rows(rownum).Item("NumGroupe") Then
Exit While
ElseIf rownum = dtt.Rows.Count - 1 Then
MsgBox("Le groupe choisi n'existe pas. ", MsgBoxStyle.Information, "Info...")
cnx.Close()
Exit Sub
End If
rownum += 1
End While
'ouverture de la connection(à partir du répertoire de l'application)sur la même ligne
cnxstr "provider microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\base.mdb;"
cnx = New OleDbConnection
cnx.ConnectionString = cnxstr
cnx.Open()
'Création de la requête sql
sql = "select Classe.* from Classe"
'Création de la commande et on l'instancie (sql)
cmd = New OleDbCommand(sql)
'Création du dataadapter (dta) et on l'instancie (cmd)
dta = New OleDbDataAdapter(cmd)
'On instancie la commande (cmd) à la connection (cnx)
cmd.Connection() = cnx
'On charge le dataset (dts) grace à la propriété fill du dataadapter (dta)
dta.Fill(dts, "Classe")
'On charge la datatable (dtt) grace à la propriété tables du dataset (dts)
dtt = dts.Tables("Classe")
While rownum < dtt.Rows.Count
If txtnumclasse.Text = dtt.Rows(rownum).Item("NumClasse") Then
Exit While
ElseIf rownum = dtt.Rows.Count - 1 Then
MsgBox("La classe choisie n'existe pas. ", MsgBoxStyle.Information, "Info...")
cnx.Close()
Exit Sub
End If
rownum += 1
End While
If (txtlv1.Text <> "anglais" And txtlv1.Text <> "italien" And txtlv1.Text <> "allemand" And txtlv1.Text <> "espagnol") Or (txtlv2.Text <> "anglais" And txtlv2.Text <> "italien" And txtlv2.Text <> "allemand" And txtlv2.Text <> "espagnol") Then
MsgBox("Veuillez choisir une LV1 ou LV2 exitante. ", MsgBoxStyle.Information, "Info...")
Exit Sub
End If
'ouverture de la connection(à partir du répertoire de l'application)
conn "provider microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\base.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 Eleve.* from Eleve"
cmd = New OleDbCommand(sql)
dta = New OleDbDataAdapter(cmd)
cmd.Connection() = cnx
'chargement du DataSet à partir du DataAdapter
dta.Fill(dts, "Eleve")
'chargement de la DataTable à partir du DataSet
dtt = dts.Tables("Eleve")
While rownum <> dtt.Rows.Count
If v1 = dtt.Rows(rownum).Item("NumEleve") Then
MsgBox("Ce numéro d'élève est déjà attribue, veuillez en choisir un autre. . ", MsgBoxStyle.Information, "Info...")
Exit Sub
End If
rownum += 1
End While
'si un champ n'est pas rempli fin de procédure
If IsNumeric(v1) And IsNumeric(v2) And IsNumeric(v3) Then
'crátion d'une nouvelle ligne avec les données des textbox
dtr = dts.Tables("Eleve").NewRow
dtr("NumEleve") = Me.txtnumeleve.Text
dtr("NomEleve") = Me.txtnomeleve.Text
dtr("PrenomEleve") = Me.txtprenomeleve.Text
dtr("LV1") = Me.txtlv1.Text
dtr("LV2") = Me.txtlv2.Text
dtr("NumClasse") = Me.txtnumclasse.Text
dtr("NumGroupe") = Me.txtnumgroupe.Text
'ajout de la ligne dans le DataSet
dts.Tables("Eleve").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, "Eleve")
'on vide le dataset pour le recréer avec
'les nouvelles données
dts.Clear()
dta.Fill(dts, "Eleve")
dtt = dts.Tables("Eleve")
'mise à jour de la datagrid
DataGrid1.SetDataBinding(dts, "Eleve")
'aller au début du fichier
rownum = 0
'affichage des données dans les texbox
Me.txtnumeleve.Text = dtt.Rows(rownum).Item("NumEleve")
Me.txtnomeleve.Text = dtt.Rows(rownum).Item("NomEleve")
Me.txtprenomeleve.Text = dtt.Rows(rownum).Item("PrenomEleve")
Me.txtlv1.Text = dtt.Rows(rownum).Item("LV1")
Me.txtlv2.Text = dtt.Rows(rownum).Item("LV2")
Me.txtnumclasse.Text = dtt.Rows(rownum).Item("NumClasse")
Me.txtnumgroupe.Text = dtt.Rows(rownum).Item("NumGroupe")
olman50
Messages postés4Date d'inscriptionmercredi 2 juin 2010StatutMembreDernière intervention10 juin 2010 4 juin 2010 à 11:30
merci pour ton aide mais j'ai trouvé beaucoup simple ^^ avec ceci :
If rownum > dtt.Rows.Count - 1 Then
MsgBox("Aucun groupe n'existe, veuillez créér les groupes nécessaisres.", MsgBoxStyle.Information, "Info...")
Exit Sub
End If
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 2 juin 2010 à 17:58
Tu n'as qu'à lancer une requete "select count(*) from table" et en fonction de ce que donne count(*) tu peux afficher ton message.
Pour arreter l'execution du code, tu peux utilier un equivalent du try/catch en vb :
au début de la procedure : onError Goto CatchException
et à la fin une étiquette
NormalExit :
Exit Sub
CatchException :
Msgbox "erreur"
goto NormalExit
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 3 juin 2010 à 18:59
En fait, ce que je ferais si j'étais de toi, c'est que je ne me soucierais pas trop de si les tables sont vides ou pas. Le problème c'est que lorsque les tables sont vides, tes traitements vont renvoyer une erreur, il faudra alors intercepter cette erreur de la façon suivante.
Je ne sais pas comment tu appelles tes fonction d'accès aux données mais admettons que ce soit sur un clique de bouton dans la commande du bouton la premiere ligne sera : On Error Goto CatchException 'indique au programme ce qu'il doit faire en cas d'erreur
Dans ce cas, tu lui dis que quand il y a une erreur, il dois rejoindre l'étiquette CatchException. Cette étiquette, tu dois la définir, pour cela, à la fin de ton code, juste avant le End Sub associé au bouton, tu écris
NormalExit :
Exit Sub
CatchException :
Msgbox "erreur"
goto NormalExit
Pour résumer
Sub boutonClick()
On Error Goto CatchException
'Ton code
NormalExit :
Exit Sub
CatchException :
Msgbox "erreur"
goto NormalExit
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_jemaoui
Messages postés5Date d'inscriptionlundi 20 décembre 2010StatutMembreDernière intervention29 avril 2011 20 déc. 2010 à 01:46
bonjour,
tu peut utilser une fonction qui te donne qomme resultat si ta table est vide ou non
la fonction sera:
Private Function estVide(ByVal table As String) As Boolean
'tu fait dabort les declaration necessaire pour te connecter a ta BD
'avec la requete SQL
Dim r As String
r = "SELECT COUNT(*) FROM " + table
Dim n As Integer
'puis tu execute ta commande
n = cmd.executesclar()
If n = 0 Then
estVide = True
Else
estVide = False
End If
End Function
et tu appel cette fonction pour tester si une table est vide
If estVide("matable") Then
MsgBox("la table est vide")
Else
....traitement
End If