---------------------------------------------------------------
Q 1. Quel est la manière d'ouvrir une base SQL
En Access et ODBC je n'ai pas de problème
Ma procédure va elle fonctionné?
'reférence
'Microsoft ADO Ext. 2.1 pour DDL et Sécurité
'reférence pour L'ADOB
'Microsoft ActiveX Data Objets 2.1 Library
On Error GoTo err_ouvreBase
If DB.State = adStateClosed Then
Select Case strBaseDeDonnéeType
Case "ACCESS"
'Access
DB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
" & strCheminBase & strNomBase
Case "ODBC"
'ODBC
DB.Open "Provider=MSDASQL.1;Persist Security
Info=False;Data Source=surgest;Initial Catalog=" &
strCheminBase & strNomBase
Case "SQLServeur"
'DB.Open "Provider=SQLOLEDB;data Source=<name of your SQL
Server>;"
' DB.Open "Provider=SQLOLEDB;data Source=" & strCheminBase &
strNomBase
'ou
'Syntaxe sans DSN (connexion sans DSN) :
'"[Provider=MSDASQL;] DRIVER=pilote; SERVER=serveur;
DATABASE=basededonnées; UID=utilisateur; PWD=motdepasse"
End Select
End If
----------------------------------------------------------------------------
---------------------
Q 2. Si une erreur se produit en ouvrant la base c'est que celle ci n'existe
pas alors je la crée
Ma procédure va elle fonctionné?
On Error GoTo err_ouvreBase
....Ouverture de la base (Q1)
err_ouvreBase:
'La base n'existe pas
If Err.Number = 3024 Or Err.Number = -2147467259 Then
Unload Frm_logo
frmProgresseBar.Visible = False
Exit Function
********************************************
Sub CreateDatabaseX(NomDeLaBase As String)
Dim wrkDefault As Workspace
Dim dbsNew As Database
Dim prpLoop As Property
' Obtient l'objet Workspace par défaut.
Set wrkDefault = DBEngine.Workspaces(0)
' Vérifie qu'aucun fichier ne porte le nom de la
' nouvelle
' base de données.
If Dir(NomDeLaBase) <> "" Then Kill NomDeLaBase
' Crée une nouvelle base de données cryptée avec
' l'ordre de classement précisé.
Set dbsNew = wrkDefault.CreateDatabase(NomDeLaBase, _
dbLangGeneral, dbEncrypt)
If EnDebug Then
With dbsNew
Debug.Print "Propriétés de " & .Name
' Énumère la collection Properties du nouvel
' objet Database.
For Each prpLoop In .Properties
If prpLoop <> "" Then Debug.Print " " & _
prpLoop.Name & " = " & prpLoop
Next prpLoop
End With
End If
dbsNew.Close
End Sub
----------------------------------------------------------------------------
---------------------
Q3. Quand j'ouvre une table si elle n'existe pas je la crée.
Ma procédure va elle fonctionné?
Dim r As ADODB.Recordset
Set r = New ADODB.Recordset
'****************************************************************
'*********************************** Numérisation
'****************************************************************
On Error GoTo err_Numerisation
r.Open "SELECT * FROM [Numerisation]", DB, adOpenStatic,
adLockOptimistic
Frm_logo.ImageG.Left = Frm_logo.ImageG.Left - 100
r.Close
*********************
err_Numerisation:
frmProgresseBar.ProgressBar1.Value = frmProgresseBar.ProgressBar1.Value
+ 1
frmProgresseBar.Label1(2) = "Création de la table: [Numérisation]"
frmProgresseBar.Refresh
CreateFieldX ("[Numerisation]")
On Error GoTo 0
LimiteDeTemps = Time + MyTime
Do While Time < LimiteDeTemps
Loop
frmProgresseBar.Refresh
Resume
*************
Sub CreateFieldX(tbl As String)
Dim dbsNorthwind As Database
Dim tdfNew As TableDef
Dim fldLoop As Field
Dim prpLoop As Property
Dim idx As Index
On Error GoTo err_création
Set dbsNorthwind = OpenDatabase(strCheminBase & strNomBase)
Select Case tbl
'*****************************************
'*** Dossier
'*****************************************
Case "[tbDossier]"
Set tdfNew = dbsNorthwind.CreateTableDef("tbDossier")
' Crée et ajoute de nouveaux objets Field pour le
' nouvel objet TableDef.
With tdfNew
Debug.Print "Propriétés des nouveaux champs de " & tdfNew.Name
' Énumère la collection Fields pour afficher les
' propriétés des nouveaux objets Field.
For Each fldLoop In tdfNew.Fields
Debug.Print " " & fldLoop.Name
For Each prpLoop In fldLoop.Properties
' Toute tentative de lecture de propriétés
' non valides dans le contexte de TableDefs
' provoquera une erreur.
On Error Resume Next
Debug.Print " " & prpLoop.Name & " - " & IIf(prpLoop
= "", "[vide]", prpLoop)
On Error GoTo 0
Next prpLoop
Next fldLoop
End If
dbsNorthwind.Close
Exit Sub
err_création:
intRep = Message_Erreur(Err, Err.description, "CreateFieldX")
Resume
----------------------------------------------------------------------------
----------
Q3. Ici je vérifie le nombre de champs pour version antérieur
Ma procédure va elle fonctionné?
'*****************************************
'*** Vérifier Nombre De Champs
'*** Pour version antérieure
'*****************************************
If LireDansINI(strFichierINI, "Verifier champs", "Base", " ") <>
App.Major & "." & App.Minor & "." & App.Revision Then
Frm_logo.lblChargement = "Vérification de la structure des bases..."
Frm_logo.ImageG.Left = Frm_logo.ImageG.Left - 100
Frm_logo.lblChargement.Refresh
VérifierNombreDeChampsDossier
Frm_logo.ImageG.Left = Frm_logo.ImageG.Left - 100
EcrireDansINI strFichierINI, "Verifier champs", "Base", App.Major &
"." & App.Minor & "." & App.Revision
End If
******************
Public Sub VérifierNombreDeChampsDossier()
' Ouvre la table
Dim r As ADODB.Recordset
Dim x, y As Integer
Dim Nom(7)
Dim trouver As Boolean
Const TotalNouveauChamps As Integer = 7
Set r = New ADODB.Recordset
r.CursorType = adOpenKeyset
r.LockType = adLockOptimistic
r.Open "SELECT * FROM [tbDossier]", DB, , , adCmdText
'Manque des champs
'VérifierChamps
If R.Fields.Count < 25 Then
For y = 1 To TotalNouveauChamps
trouver = False
For x = 0 To r.Fields.Count - 1
If UCase(r.Fields(x).Name) = UCase(Nom(y)) Then
trouver = True
Exit For
End If
Next
If Not trouver Then
GoSub ConstruireChamps
GoSub RECOMMENCE
End If
Next y
End If
Exit_VérifierNombreDeChampsDossier:
Screen.MousePointer = vbNormal
Exit Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zoury
Salut Yves! :O)
Q 1. Quel est la manière d'ouvrir une base SQL En Access et ODBC je n'ai pas de problème Ma procédure va elle fonctionné?
Possiblement.. le code semble correct, mais il est évident que tu serait mieux de la testé toi même.. ;O) si tu as des problèmes avec les chaines de connexion ADO, je te recommande ce site : http://www.able-consulting.com/ADO_Conn.htm
Q 2. Si une erreur se produit en ouvrant la base c'est que celle ci
n'existe
pas alors je la crée Ma procédure va elle fonctionné?
<snip>
Q3. Quand j'ouvre une table si elle n'existe pas je la crée. Ma procédure va elle fonctionné?
<snip>
Q3. Ici je vérifie le nombre de champs pour version antérieur Ma procédure va elle fonctionné?
euhhmm.... dans ton premier exemple de code tu affirmes ceci : 'reférence pour L'ADOB 'Microsoft ActiveX Data Objets 2.1 Library
alors que dans ton deuxième exemple de code, tu as ce code ci :
' Obtient l'objet Workspace par défaut. Set wrkDefault = DBEngine.Workspaces(0)
l'objet DBEngine existe en DAO et non en ADO donc, non, tes procédures ne fonctionneront pas.. a moins d'utiliser DAO au lieu d'ADO..
Voici des liens qui pourrait t'intéresser : http://msdn.microsoft.com/library/en-us/ado270/htm/admscadoapireference.asp http://msdn.microsoft.com/library/en-us/ado270/htm/admscadoddlexamples.asp
tu pourrais également créer la base de données (ou tout autre objet d'ailleurs..) directement en SQL par l'objet Connection , quelque chose comme (la syntaxe est pour SQL Server et le code n'est pas testé..) : '*** Dim cn As ADODB.Connection Set cn = New ADODB.Connection
' on se connecte sur le serveur Call cn.Open("ma_chaine_de_connection") Call cn.Execute("create database MyNewDB"); Call cn.Execute("create table product([id] int identity primary key, [name] varchar(30) not null, [description] varchar(255) null)"); Call cn.Close '***
-- Cordialement Yanick Lefebvre MVP pour Visual Basic
Salut Yves! :O)
Q 1. Quel est la manière d'ouvrir une base SQL
En Access et ODBC je n'ai pas de problème
Ma procédure va elle fonctionné?
Possiblement.. le code semble correct, mais il est évident que tu serait
mieux de la testé toi même.. ;O)
si tu as des problèmes avec les chaines de connexion ADO, je te recommande
ce site :
http://www.able-consulting.com/ADO_Conn.htm
Q 2. Si une erreur se produit en ouvrant la base c'est que celle ci
n'existe
pas alors je la crée
Ma procédure va elle fonctionné?
<snip>
Q3. Quand j'ouvre une table si elle n'existe pas je la crée.
Ma procédure va elle fonctionné?
<snip>
Q3. Ici je vérifie le nombre de champs pour version antérieur
Ma procédure va elle fonctionné?
euhhmm.... dans ton premier exemple de code tu affirmes ceci :
'reférence pour L'ADOB
'Microsoft ActiveX Data Objets 2.1 Library
alors que dans ton deuxième exemple de code, tu as ce code ci :
' Obtient l'objet Workspace par défaut.
Set wrkDefault = DBEngine.Workspaces(0)
l'objet DBEngine existe en DAO et non en ADO donc, non, tes procédures ne
fonctionneront pas.. a moins d'utiliser DAO au lieu d'ADO..
Voici des liens qui pourrait t'intéresser :
http://msdn.microsoft.com/library/en-us/ado270/htm/admscadoapireference.asp
http://msdn.microsoft.com/library/en-us/ado270/htm/admscadoddlexamples.asp
tu pourrais également créer la base de données (ou tout autre objet
d'ailleurs..) directement en SQL par l'objet Connection , quelque chose
comme (la syntaxe est pour SQL Server et le code n'est pas testé..) :
'***
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
' on se connecte sur le serveur
Call cn.Open("ma_chaine_de_connection")
Call cn.Execute("create database MyNewDB");
Call cn.Execute("create table product([id] int identity primary key,
[name] varchar(30) not null, [description] varchar(255) null)");
Call cn.Close
'***
--
Cordialement
Yanick Lefebvre
MVP pour Visual Basic
Q 1. Quel est la manière d'ouvrir une base SQL En Access et ODBC je n'ai pas de problème Ma procédure va elle fonctionné?
Possiblement.. le code semble correct, mais il est évident que tu serait mieux de la testé toi même.. ;O) si tu as des problèmes avec les chaines de connexion ADO, je te recommande ce site : http://www.able-consulting.com/ADO_Conn.htm
Q 2. Si une erreur se produit en ouvrant la base c'est que celle ci
n'existe
pas alors je la crée Ma procédure va elle fonctionné?
<snip>
Q3. Quand j'ouvre une table si elle n'existe pas je la crée. Ma procédure va elle fonctionné?
<snip>
Q3. Ici je vérifie le nombre de champs pour version antérieur Ma procédure va elle fonctionné?
euhhmm.... dans ton premier exemple de code tu affirmes ceci : 'reférence pour L'ADOB 'Microsoft ActiveX Data Objets 2.1 Library
alors que dans ton deuxième exemple de code, tu as ce code ci :
' Obtient l'objet Workspace par défaut. Set wrkDefault = DBEngine.Workspaces(0)
l'objet DBEngine existe en DAO et non en ADO donc, non, tes procédures ne fonctionneront pas.. a moins d'utiliser DAO au lieu d'ADO..
Voici des liens qui pourrait t'intéresser : http://msdn.microsoft.com/library/en-us/ado270/htm/admscadoapireference.asp http://msdn.microsoft.com/library/en-us/ado270/htm/admscadoddlexamples.asp
tu pourrais également créer la base de données (ou tout autre objet d'ailleurs..) directement en SQL par l'objet Connection , quelque chose comme (la syntaxe est pour SQL Server et le code n'est pas testé..) : '*** Dim cn As ADODB.Connection Set cn = New ADODB.Connection
' on se connecte sur le serveur Call cn.Open("ma_chaine_de_connection") Call cn.Execute("create database MyNewDB"); Call cn.Execute("create table product([id] int identity primary key, [name] varchar(30) not null, [description] varchar(255) null)"); Call cn.Close '***
-- Cordialement Yanick Lefebvre MVP pour Visual Basic