BD Access problème pour accéder à une BD

Résolu
BeuheC Messages postés 16 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 15 juin 2010 - 6 mars 2008 à 19:18
BeuheC Messages postés 16 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 15 juin 2010 - 22 août 2008 à 10:15
Bonjour

Première question:

J'ai créé une connection avec une BD, jusque là ca à l'air de fonctionner.
Puis j'ai ajouter une nouvelle connection à une autre BD. Dans le Data Sources je vois bien les 2 BD.
Mon problème est que je n'arrive pas à supprimer une de ces connections.
Comme la première ne m'intéresse plus, j'ai supprimé la BD (le fichier .mdb)
et quand je lance le debugage, j'ai une erreur car il cherche la BD ...

Deuxième question :

J'ai récupérer le code d'un tuto de ce site pour débuter avec les BD.
J'ai une erreur à cette ligne :

      'On charge le dataset (dts) grace à la propriété fill du dataadapter (dta)
       dta.Fill(dts, "Table1")

OleDbException was unhandled
Erreur de syntaxe dans la clause FROM

Voilà le code :

Imports System
Imports System.Data
Imports System.Data.OleDb
Imports Microsoft.VisualBasic

Public Class Chronos

    'Déclaration de la variable pour la connection
    Private cnx As OleDbConnection

    'Déclaration de la variable pour la commande
    Private cmd As OleDbCommand

    'Déclaration de la variable pour le dataadapter
    Private dta As OleDbDataAdapter

    'Déclaration de la variable pour le dataset
    Private dts As New DataSet

    'Déclaration de la variable pour la requête
    Private sql As String

    'Déclaration de la variable pour la datatable
    Private dtt As DataTable

    'Déclaration de la variable pour le datarow
    Private dtr As DataRow

    'Déclaration de la variable pour le Nº de l'enregistrement
    Private rownum As Integer

    'Déclaration de la variable pour la connectionstring
    Private cnxstr As String

    'Déclaration de la variable pour le commandbuilder
    Private cmdb As OleDbCommandBuilder

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        BTps1.Text = "OK"

        'ES1(1, 1) = 12

        '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 & "\BDTps.mdb;"
        cnx = New OleDbConnection
        cnx.ConnectionString = cnxstr
        cnx.Open()

        'Création de la requête sql
        sql = "select Table1.* from table"

        '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, "Table1")

        'On charge la datatable (dtt) grace à la propriété tables du dataset (dts)                 
        dtt = dts.Tables("Table1")

        'crátion d'une nouvelle ligne avec les données des textbox
        dtr = dts.Tables("Table1").NewRow
        dtr("Name") = "139 - Beu-C"

        'ajout de la ligne dans le DataSet
        dts.Tables("Table1").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(dta)à partir du commandbuilder (cmdb)
        dta.Update(dts, "Table1")

        'on vide le dataset pour le recréer avec  les nouvelles données
        dts.Clear()
        dta.Fill(dts, "Table1")
        dtt = dts.Tables("Table1")

        Me.BTps1.Text = dtt.Rows(0).Item("Name")

    End Sub

End Class

Merci à ceux qui auront la gentillesse de me répondre.

A+

8 réponses

petitcaro112 Messages postés 46 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 30 janvier 2009
13 mars 2008 à 16:25
En fait il faut que dans ta BD il y ait une table qui porte le nom "Table1"... Sinon ça risque pas de marcher !

Je te conseille par exemple de créer une variable srcTable en tant que String et de lui attribuer le nom de ta table.

Moi par exemple dans mes programmes j'ai crée une fonction pour me connecter à une BD, tu peux modifier cette fonction en lui envoyant le nom de ta BD.
J'ai aussi crée une fonction pour me connecter à une table dans la BD et aussi une fonction pour me déconnecter de la BD (très important si tu veux te connecter à une autre BD)
Voici les 3 fonctions et des exemples d'appel de ces fonctions :


Public
Function OpenCnx()      'Fonction pour se connecter à la BD






TEST:   'Le GoTo revient ici


DbFn =




My
.Settings.FullFileName   'c'est le nom de ma BD que je récupère dans le fichier app.config


If



My
.Computer.FileSystem.FileExists(DbFn)

Then   'Teste si la BD existe

cnxstr "Provider Microsoft.Jet.OleDb.4.0 ; Data Source = "
& DbFn & _


" ;Jet OLEDB:Database Password=mon_mdp; Persist Security Info = False"

cnx =




New
OleDbConnectioncnx.ConnectionString = cnxstr

cnx.Open()


Else      'Si la BD n'existe pas on la cherche grâce un OpenFileDialog

MsgBox(




"Impossible de se connecter à la base de données"
, MsgBoxStyle.Information,

"ERREUR"
)OpenFileDialog1.Title =


"Connexion … la base de données"

OpenFileDialog1.ShowDialog()   'On va chercher la BD manuellement







My
.Settings.FullFileName = OpenFileDialog1.FileName


GoTo
TEST


End



If






End



Function

Public

Function CloseCnx()      'Fonction pour fermer la connexion à la BDdtt.Clear()      'On vide les données de la table

dts.Clear()      'On vide le DataSet

cnx.Close()   'On ferme la connexion

cnx =

Nothing   'On la ferme pour de bon !

End
Function

Public

Function CnxTable(ByVal sTable AsString)   'Connexion à une table en fonction de la donnée reçuesql =

"select " & sTable & ".* From " & sTablecmd New OleDbCommand(sql)dta

New OleDbDataAdapter(cmd)cmd.Connection() = cnx

dta.Fill(dts, sTable)

dtt = dts.Tables(sTable)

End
Function

Dans ton code pour te connecter à une table tu procèdes comme ça :

Dim srcTable As String = "Ma_Table"
OpenCnx()
CnxTable(srcTable)
'Ici tu fais ce que tu as à faire avec la BD
CloseCnx()

Est ce que ça te convient ou tu as d'autres questions ?
3
BeuheC Messages postés 16 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 15 juin 2010
13 mars 2008 à 18:39
Salut, tout d'abord merci beaucoup


Ta réponse est excellente.


Depuis que j'ai posé la question, j'ai un peu avancé et maintenant j'arrive à créer une BD et à créer les table que je souhaite.

J'arrive également à me connecter et à récupérer les infos contenues
dedans (si je les ai inscrits manuellement via Access), par contre je
n'arrive pas à écrire dans les tables via VB ...


Si tu as un petit exemple dans le même style que ceux que tu m'as fourni précedemment, ca serait super ;-)


Encore merci pour ta réponse !
0
cs_bendimerad Messages postés 4 Date d'inscription vendredi 2 mars 2007 Statut Membre Dernière intervention 22 août 2008
21 août 2008 à 10:17
à toute personne disponible pour m'aider, merci d'avance:
j'ai déclaré ma base et ma table ainsi:
Public db As Database
Public rst As Recordset

mais quant je lance une erreur apparait me disant que "type défini par l'utilisateur non défini" .
Que dois je faire?
merci.
Bendimerad
0
cs_bendimerad Messages postés 4 Date d'inscription vendredi 2 mars 2007 Statut Membre Dernière intervention 22 août 2008
21 août 2008 à 10:41
je sais c'est en relation avec une référence dans le menu projet, mais laquelle?

Bendimerad
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BeuheC Messages postés 16 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 15 juin 2010
21 août 2008 à 20:08
Salut

Je peux te répondre mais pas avant ce Week-end ...

En attendant peux tu me préciser quel langage et quel logiciel tu utilises ?
0
cs_bendimerad Messages postés 4 Date d'inscription vendredi 2 mars 2007 Statut Membre Dernière intervention 22 août 2008
22 août 2008 à 09:10
j'utilise VB 6 langage visual basic, merci pour l'interêt au sujet, à bientôt,Salut,

Bendimerad
0
cs_bendimerad Messages postés 4 Date d'inscription vendredi 2 mars 2007 Statut Membre Dernière intervention 22 août 2008
22 août 2008 à 09:32
j'ai reopié ton code dans VB 6 et voilà ce que ça donne:
PublicFunction OpenCnx()      'message "incorrect à l'exterieur d'une procedure"
TEST:   'Le GoTo revient ici
DbFn = My.Settings.FullFileName   'c'est le nom de ma BD que je récupère dans le fichier app.config
If My.Computer.FileSystem.FileExists(DbFn) Then   'Teste si la BD existecnxstr "Provider Microsoft.Jet.OleDb.4.0 ; Data Source = " & DbFn & _
" ;Jet OLEDB:Database Password=mon_mdp; Persist Security Info = False"
cnx = New OleDbConnection
cnx.ConnectionString = cnxstr
cnx.Open()
Else      'Si la BD n'existe pas on la cherche grâce un OpenFileDialog
MsgBox("Impossible de se connecter à la base de données",MsgBoxStyle.Information,"ERREUR")
OpenFileDialog1.Title = "Connexion . la base de données"
OpenFileDialog1.ShowDialog()   'On va chercher la BD manuellement
My .Settings.FullFileName = OpenFileDialog1.FileName
GoTo TEST
End If
End Function




Public Function CloseCnx()      'Fonction pour fermer la connexion à la BD
dtt.Clear()      'On vide les données de la table
dts.Clear()      'On vide le DataSet
cnx.Close()   'On ferme la connexion
cnx = Nothing   'On la ferme pour de bon !
End Function


Public Function CnxTable(ByVal sTable As String)
  'Connexion à une table en fonction de la donnée reçue
sql = "select " & sTable & ".* From " & sTable
cmd = New OleDbCommand(sql)
dta =New OleDbDataAdapter(cmd)
cmd.Connection() = cnx
dta.Fill(dts,sTable)
dtt = dts.Tables(sTable)
EndFunction




Private Sub Form_Load()
'Dans ton code pour te connecter à une table tu procèdes comme ça :
Dim srcTable As String = "Ma_Table"
OpenCnx()
CnxTable (srcTable)
'Ici tu fais ce que tu as à faire avec la BD
CloseCnx()


End Sub

Que dois-je faire dans l'application pour que ton code soit lu correctement: en rouge ce que le compilateur souligne.

Bendimerad
0
BeuheC Messages postés 16 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 15 juin 2010
22 août 2008 à 10:15
Le code que tu as recopié est du VB 2005.
Donc c'est normal si tu as plein d'erreurs à la compilation.

Ce soir ou demain je te liste les références qui m'ont permis d'utiliser les BD Access.


Tu dois pouvoir trouver la réponse sur ce site, moi je ne les ai pas inventés.
Mais je ne sais plus où j'ai trouvé ca ...

Je te tiens au courant.
0
Rejoignez-nous