Comment manipuler une base de données access

thr_dreamer_57 Messages postés 44 Date d'inscription lundi 27 juin 2005 Statut Membre Dernière intervention 3 novembre 2008 - 8 juil. 2005 à 08:21
mythic_kruger Messages postés 241 Date d'inscription jeudi 8 janvier 2004 Statut Membre Dernière intervention 10 novembre 2005 - 10 juil. 2005 à 04:20
Bonjour tout le monde, et merci de m'avoir accorder votre attention
Je suis entrain de réaliser une petite application en Visual Basic afin de réaliser quelques traitements et j'ai trouver malheureusement quelques problemes mais comme même il ne faut pas nier que c'est ma première application dans ce genre. Le premier problème ke jé rencontrer c'est la méthode à utiliser pour ajouter des enregistrements dans ma base sachant ke j'ai déja réaliser les connexions et tout ca, les champs dans lesquels je vais saisir les données à ajouter sont des testbox et le code ke jé utilisé pour cette opértion est le suivant :

Private Sub Command1_Click() 'ca c le boutton d'enregistrement

DataEnvironment1.rsDSLAMEsclave.Open 'DSLAMsclave est la table
DataEnvironment1.rsDSLAMEsclave.AddNew

DataEnvironment1.rsDSLAMEsclave.Fields("nom_cite").Value = Val(Text1.Container)
DataEnvironment1.rsDSLAMEsclave.Fields("nom_central_DSLAMm").Value = Val(Text2.Container)
DataEnvironment1.rsDSLAMEsclave.Fields("nbr_acc_adsl_existant").Value = Val(Text3.Container)
DataEnvironment1.rsDSLAMEsclave.Fields("nbr_acc_adsl2+_existant").Value = Val(Text4.Container)
DataEnvironment1.rsDSLAMEsclave.Fields("nbr_acc_shdsl_existant").Value = Val(Text5.Container)
DataEnvironment1.rsDSLAMEsclave.Fields("nbr_ab_tel").Value = Val(Text6.Container)

DataEnvironment1.rsDSLAMEsclave.Fields("nb_cartes_IMA").Value = Val(Text8.Container)
DataEnvironment1.rsDSLAMEsclave.Fields("nb_cartes_E3").Value = Val(Text9.Container)
DataEnvironment1.rsDSLAMEsclave.Fields("nb_cartes_STM1").Value = Val(Text10.Container)
DataEnvironment1.rsDSLAMEsclave.Fields("nb_cartes_ADSL").Value = Val(Text11.Container)
DataEnvironment1.rsDSLAMEsclave.Fields("nb_cartes_ADS2+").Value = Val(Text12.Container)
DataEnvironment1.rsDSLAMEsclave.Fields("nb_cartes_SHDSL").Value = Val(Text13.Container)

DataEnvironment1.rsDSLAMEsclave.Fields("nb_ports_E1_DSLAMm").Value = Val(Text14.Container)
DataEnvironment1.rsDSLAMEsclave.Fields("nb_ports_E3_DSLAMm").Value = Val(Text15.Container)
DataEnvironment1.rsDSLAMEsclave.Fields("nb_ports_STM1_DSLAMm").Value = Val(Text16.Container)

DataEnvironment1.rsDSLAMEsclave.Update
DataEnvironment1.rsDSLAMEsclave.Close

End Sub


il est à signaler ke les deux premiers champs "nom_cite" et "nom_central_DSLAMm" sont des camps de type texte dans la table access et les autres champs sont de type numérique. Et l'erreur qui s'affiche est la suivante " Erreur d'execution '3251': Current Recordset does not suuport updating. This may be a limitation of the provider, or of the selected locktype"

et merci de votre attention

4 réponses

cs_dan80 Messages postés 101 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 19 avril 2006
8 juil. 2005 à 10:10
essaye le adodb c plus simple
0
thr_dreamer_57 Messages postés 44 Date d'inscription lundi 27 juin 2005 Statut Membre Dernière intervention 3 novembre 2008
8 juil. 2005 à 10:24
c koi adodb
svp si vous avez une idée du code ke jé poser si-dessous ce me frai très plaisir sinon donner des réponses plus explicites s'il vous plais.
car j'i dit vien ke jé besoin d'aide. merci
encore une chose arreter d'utiliser ces smilies c pas respectieux dans certaines situations.
0
K_SoZe Messages postés 39 Date d'inscription dimanche 8 mai 2005 Statut Membre Dernière intervention 8 juillet 2005 18
8 juil. 2005 à 16:38
Bonjour,



Je pense que la manière la plus simple pour résoudre de ton problème
est d'utiliser une connexion Adodb, comme te l'a conseillé Dan80 ,
ainsi qu'un recordset.

La connexion Adodb va générer un lien entre Access et tes données.

Le recordset va puiser les données de tes tables ou requêtes, ses propriétés vont te permettre de les manipuler.



Exemple :



'Déclaration des variables de connexion et de chaîne de caractères ainsi que de l'objet recordset

Dim cx As Adodb.Connection

Dim rs As Adodb.Recordset

Dim donnee As String



'Affecte la variable de connexion

Set cx = CurrentProject.AccessConnection

'Crée une instance de l'objet recordset

Set rs = New Adodb.Recordset


'Ouvre la table où les données doivent être ajoutées

rs.open "NomDeTaTable", cx, adOpenKeyset, adLockOptimistic



'Affecte la variable des données à ajouter

donnee = Val(Text.Container)



'Si le recordset ne contient pas d'enregistrement

If rs.BOF And rs.EOF = True Then


rs.AddNew
rs.Fields("NomDeTonChamp") = donnee
rs.Update



Else



'Si il en contient alors va sur le suivant

rs.movenext



End If



J'espère que ce début de réponse pourra t'aider.


K. SZe
0
mythic_kruger Messages postés 241 Date d'inscription jeudi 8 janvier 2004 Statut Membre Dernière intervention 10 novembre 2005
10 juil. 2005 à 04:20
Salut Première question est-ce que
Microsoft Data Access est installé et quelle version du moteur Jet,
sous quel OS? L'erreur 3251 est assez répandue

http://support.microsoft.com/default.aspx?scid=kb;EN-US;249683

Néanmoins je vais également dans le sens de Dan

<gras></gras>
0