Pb avec BdD SQL CE

borisdu59 Messages postés 4 Date d'inscription lundi 1 juin 2009 Statut Membre Dernière intervention 12 février 2016 - 7 juin 2011 à 11:33
borisdu59 Messages postés 4 Date d'inscription lundi 1 juin 2009 Statut Membre Dernière intervention 12 février 2016 - 7 juin 2011 à 15:33
Bonjour ter tous.

Voila mon petit/gros problème: J'essaye de développer un programme permettant de gérer des notes au sein de mon école.

Pour l'instant je suis au tout début (du programme et de la découverte de VB!).

Je vous explique le business. Les notes sont gérer par des fichier excel (ce qui permet de calculer moyenne, coef, crédit ECTS, etc.)

J'aimerai que le programme que je développe permettent d'indexer les notes des étudiants de manières à pouvoir rééditer un bulletin des années après le départ du dit étudiant sans devoir gérer des quantités de fichier excel.

De plus, les absence joue un rôle dans l’attribution de note et dans le passage des examen. Pour l'instant la gestion des absences est géré à la main par les responsable de cycle. Il serait intéressant d'automatiser cette gestion.

Donc pour revenir à mon problème, pour l'instant je bloque sur mes fichier excel. En effet je profite de ce programme pour centraliser toute les action tournant autour des notes et des absences. Pour continuer à gérer les calcul par excel j'ai besoin de renseigner le chmein de chaque fichiers (20 au total). pour cela j'ai créer autaint de champs et je cherche à les sauvegarder dans une base de donnée SQL CE.

J'ai réaliser le tuto de Mayzz (http://www.vbfrance.com/tutoriaux/GESTION-DONNEES-VISUAL-BASIC-2008-SQL-SERVER_1133.aspx), mais je n'arrive pas à l'adapter à mes besoins.

J'avoue être bloqué.

Voila le soucis: J'ai donc créer une table paramètres ou doit ce trouver les différents chemin menant au différent fichiers excel (et leur feuille de fusion word).
Mon idée était de modifier la première ligne à chaque "sauvegarde" et ainsi d'écraser les anciennes donnée. Pour cela je passe par une requête UPDATE. La requête à été modifier dans "MonDataSet.xsd" comme le préconise le tuto.

J'ai ensuite entrer le code suivant afin de créer une fonction "Update_BdD":

Private Sub Update_BdD()

enregistrement = True

RefreshDataSource()

'Récupération de la valeur de la colonne 0 de la première ligne
'sélectionné dans notre DGV.

' Dim CurrentIndex As Integer = DataGridView.CurrentRow.Index

Dim ID As Guid = CType(DGV.SelectedRows(0).Cells(0).Value, Guid)
'
Try


'
'Appel de la procédure Update de notre TableAdapter qui tranmettra
'la requête SQL UPDATE.
Dim NbLine As Integer = ParametresTableAdapter.Update( _
tb_chemin_excel_tec1.Text, _
tb_chemin_word_fusion_tec1.Text,
tb_chemin_excel_tec2.Text, _
tb_chemin_word_fusion_tec2.Text,
tb_chemin_excel_tec3.Text, _
tb_chemin_word_fusion_tec3.Text,
tb_chemin_excel_tec4.Text, _
tb_chemin_word_fusion_tec4.Text,
tb_chemin_excel_tec5.Text, _
tb_chemin_word_fusion_tec5.Text,
tb_chemin_excel_estice1.Text, _
tb_chemin_word_fusion_estice1.Text, _
tb_chemin_excel_estice2.Text, _
tb_chemin_word_fusion_estice2.Text, _
tb_chemin_excel_estice3.Text, _
tb_chemin_word_fusion_estice3.Text, _
tb_chemin_excel_estice4.Text, _
tb_chemin_word_fusion_estice4.Text, _
tb_chemin_excel_estice5.Text, _
tb_chemin_word_fusion_estice5.Text, _
ID)
REM: Cette procédure retourne un entier indiquant le nombre de lignes modifiés.
'
If NbLine > 0 Then
'
MessageBox.Show("Le contact a bien été mis" & _
" à jour dans la base de données.", _
"Mise à jour du contact", _
MessageBoxButtons.OK, _
MessageBoxIcon.Information)
'La modification effectuée nous actualisons les données de notre source
'de données en effectuant une requête
'SELECT de nouveau.
Call RefreshDataSource()
End If
'
Catch ex As Exception
'
MessageBox.Show("Une erreur est survenue durant l'accès" & _
" à la base de données." & Environment.NewLine & _
"Détails de l'erreur: " & ex.Message, _
"Echec de l'accès aux données.", _
MessageBoxButtons.OK, _
MessageBoxIcon.Exclamation)
'
End Try
'
End Sub

J'ai également créer un bouton de "sauvegarde" qui exécute la fonction Update_BdD:

Private Sub btn_parametrage_bulletin_enregistrer_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn_parametrage_bulletin_enregistrer.Click

Update_BdD()

End Sub
Lorsque j'exécute le debug, une erreur apparaît:
"L'exécution ArgumentOutOfRangeException n'a pas été gérée.
L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.
Nom du paramètre: index"

Hors le tableau possède déjà deux lignes. Il n'est donc pas vide.


Please Help, je sèche.

Merci à tous ceux qui prendrons le temps de m'aider

A tantôt!

Ps: Je ne sait pas si je peut envoyer mon ébauche de programme? Cela peut être plus simple pour comprendre.

4 réponses

Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
7 juin 2011 à 14:28
Salut,

tu as cette erreur car ta variable est soit trop grande soit négative. C'est comme si tu cherchais une donnée a l'emplacement 100 alors qu'il n'y a que 99 données. C'est un peu imagé mais je pense que c'est ça !

Verifie tes boucles en utilisant le Pas à Pas Détaillé, je fais toujours ça pour ces erreurs la et on trouve facilement
0
borisdu59 Messages postés 4 Date d'inscription lundi 1 juin 2009 Statut Membre Dernière intervention 12 février 2016
7 juin 2011 à 14:49
Pourtant la variable à comme paramètre ligne 0 et colonne 0. Cela ne devrait pas poser de problème...
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
7 juin 2011 à 15:04
Essaye le pas a pas détaillé et regarde a chaque fois tu vois les valeurs et que prennent les variables. Tu trouveras ton erreur comme ça. Sinon essaye de commencer tes variables à 1 pour voir ce que ça donne...

BTS IG ?
0
borisdu59 Messages postés 4 Date d'inscription lundi 1 juin 2009 Statut Membre Dernière intervention 12 février 2016
7 juin 2011 à 15:33
Non non,

"Informaticien" dans une école supérieur.

L’erreur revient avec un ID = 00000000-0000-0000-0000-000000000000
0
Rejoignez-nous