Pb de ACCESS

Signaler
Messages postés
110
Date d'inscription
jeudi 9 mai 2002
Statut
Membre
Dernière intervention
11 mars 2010
-
Messages postés
110
Date d'inscription
jeudi 9 mai 2002
Statut
Membre
Dernière intervention
11 mars 2010
-
allo...

voici comment ma base de données est créé.

Mon pb viens du faire que si mon application est fermé et que la base de donnée est encore ouverte, la BD deviens corrompue!

C'est tannant car ont est pas a l'abris d'une coupure de courant ou d'un ctrl+alt+supp!!!

Option Explicit

Private Cat As New ADOX.Catalog
Private cmdado As New ADODB.command

' Recordset pointant vers 1 enregistrement
Private rsProject As New ADODB.Recordset ' Table Project
Private rsImages As New ADODB.Recordset ' Table Images
Private rsData As New ADODB.Recordset ' Table Data

Private Connection As New ADODB.Connection ' Connection pour le Delete Data

'**************************************************************************'
'*** Function-- CreateDB ***'
'*** Description: Création de la Base de Données ***'
'**************************************************************************'
Public Function CreateDB(link As String)
Dim Tbl As New ADOX.Table

' Création de la Base de Données
Cat.Create "provider=microsoft.jet.oledb.3.51;" & "Data source =" & link & ";"
Connection.ConnectionString = "provider=microsoft.jet.oledb.3.51;" & "Data source =" & link & ";"

' Ajout de la table Project
With Tbl
.Name = "Project"
.Columns.append "Log Nb", adChar, 50
.Columns.append "Sample Nb", adChar, 50
.Columns.append "Name", adChar, 50
.Columns.append "Path", adChar, 255
.Columns.append "Images From", adChar, 255
.Columns.append "Calibration", adDouble

End With

Cat.Tables.append Tbl
Set Tbl = Nothing

' Ajout de la table Images
With Tbl
.Name = "Images"
.Columns.append "CalculDone", adBoolean
.Columns.append "BorderDone", adBoolean
.Columns.append "SplitDone", adBoolean
.Columns.append "ClassDone", adBoolean
.Columns.append "Name", adChar, 50
.Columns.append "Dimension", adChar, 50
End With
Cat.Tables.append Tbl
Set Tbl = Nothing

' Ajout de la table Data
With Tbl
.Name = "Data"
.Columns.append "Name", adChar, 50
.Columns.append "Indice", adInteger
.Columns.append "Class", adInteger
.Columns.append "Wall Area", adDouble
.Columns.append "Lumen Area", adDouble
.Columns.append "Fibre Per", adDouble
.Columns.append "Lumen Per", adDouble
.Columns.append "CenterLine", adDouble
.Columns.append "Fibre Width", adDouble
.Columns.append "Fibre Thick", adDouble
.Columns.append "Max Diam", adDouble
.Columns.append "Min Diam", adDouble
.Columns.append "Mean Diam", adDouble
.Columns.append "Aspect Ratio", adDouble
End With
Cat.Tables.append Tbl
Set Tbl = Nothing

' Activation des Recordset
ActiveDB

End Function

'**************************************************************************'
'*** Function-- ActiveDB ***'
'*** Description: Activation des Recordset ***'
'**************************************************************************'
Private Function ActiveDB()

' Initialisation
cmdado.ActiveConnection = Cat.ActiveConnection
cmdado.CommandText = " select * from Project"

' Activation de la table Project
rsProject.CursorLocation = adUseClient
rsProject.CursorType = adOpenDynamic
rsProject.LockType = adLockOptimistic
rsProject.Open cmdado

' Activation de la table Images
cmdado.CommandText = " select * from Images"
rsImages.CursorLocation = adUseClient
rsImages.CursorType = adOpenDynamic
rsImages.LockType = adLockOptimistic
rsImages.Open cmdado

' Activation de la table Data
cmdado.CommandText = " select * from Data "
rsData.CursorLocation = adUseClient
rsData.CursorType = adOpenStatic
rsData.LockType = adLockBatchOptimistic
rsData.Open cmdado

End Function

2 réponses

Messages postés
124
Date d'inscription
mardi 19 février 2002
Statut
Membre
Dernière intervention
7 mars 2004
1
Tu oublies une chose fondamentale, lorque tu ouvres un Recordset avec la méthode Open par exemple dans ton code à la dernière ligne : rsData.Open, il faut utiliser la méthode Close pour fermer l'enregistrement sinon ca peut provoquer ce type de pb.
0
Messages postés
110
Date d'inscription
jeudi 9 mai 2002
Statut
Membre
Dernière intervention
11 mars 2010
1
Allo...

Y'as-tu un moyen autre que d'ouvrir la BD et la fermer à toute les fois qu'on en a besoin? Car c'est la seul moyen que je vois! Autre question, comment ca se fait que lorsque je vais juste mettre mes variables à nothing avec de quitter, tout se passe à merveille sans avoir besoin d'un .close?

Par ailleurs, y'as-tu moyen de savoir si 1 objet est définie ou s'il est à nothing?

Merci!
0