Msflexgrid, adodb, commondialog, printer - des astuces

Soyez le premier à donner votre avis sur cette source.

Vue 3 259 fois - Téléchargée 960 fois

Description

Accès au base de données;
Écriture sur fichier texte;
Impression;
Coloriage et chargement d'image
Des informations en temps réels;
Des gestions d'erreur;
Etc!
Des TRUCS et ASTUCES pour les débutants!

Source / Exemple :


'Seulement le module (qui est déjà très longue)
Option Explicit 'Vous devez déclarez tous les variables
'déclaration des variables de type public pour faciliter la visibilité dans le programme
Public saisie As String, requette As String, fichier As String, mot_list As String
Public i As Long, j As Long, k As Long
Public gauche As Long, haut As Long
Public list_incident() As Variant, titre_tableau() As Variant
Public info_supplementaire() As Variant
'les variables de la base de données
'Ajouter la référence "Microsoft Activex Data Objects 2.8 Library"
Public bazy As ADODB.Connection
Public tabla_remplir As ADODB.Recordset, tabla_ajout As ADODB.Recordset, tabla_extract As ADODB.Recordset 'les variables tables ou requêtes
Public chemin_base_de_donnees As String

Sub main() 'démarrage du projet
Load Form1
chemin_base_de_donnees = ouverture_fichier("Ouvrir une base de données ...", "mdb")
Call Connect_Database(chemin_base_de_donnees)
bazy.Close
Form1.Show
End Sub

Public Sub Connect_Database(chemin As String) 'méthode de connexion d'une base de données
If chemin <> "" Then
    On Error GoTo tsymandehaizanyityfatsisybazy
    Set bazy = New ADODB.Connection 'création de l'objet_variable bazy
    'ne pas dépasser 30 seconde l'intéraction avec la base de données (référez vous au ttl du paquet IP)
    bazy.CommandTimeout = 30
    bazy.ConnectionTimeout = 30
    'ilay driver fotsiny no soloina raha hafa ilay type d'accès
    bazy.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & chemin, Environ("USERNAME"), "mot de passe" 'Connection vers le fichier Ms-Access
    Exit Sub
tsymandehaizanyityfatsisybazy:
MsgBox Error, vbInformation, ""
Else
    MsgBox "Vous n'avez pas de base de données!", vbExclamation, "Fermeture du programme!"
End If
End
End Sub

Public Function ouverture_fichier(titre As String, extension As String) As String 'une fonction qui retourne l'adresse d'enregistrement d'un fichier
    ouverture_fichier = ""
        On Error GoTo 10
        With Form1.CommonDialog1 'utilisation de la boîte de dialogue "enregistrer dans ..."
            .FilterIndex = 2
            .DialogTitle = titre   'titre de la boîte de dialogue
            .InitDir = App.Path 'chemin par défaut
            .Filter = "Fichier (*." & extension & ")|*." & extension 'définition du type de fichier (son extension)
            .ShowOpen 'Afficher la boîte de dialogue
            If Len(.FileName) = 0 Then 'on test si vous n'avez pas entré un nom de fichier
10:
                ouverture_fichier = ""
                .FileName = ""
                .InitDir = ""
            End If
            ouverture_fichier = .FileName 'on recupère cette adresse
        End With
End Function

'méthode pour remplir des données provenant d'un SQl dans un control list ou combo
Public Sub Remplir_Liste(list_ko As Control, sql_ko As String, champ_ko As String)
Call Connect_Database(chemin_base_de_donnees)
On Error Resume Next
Set tabla_remplir = New ADODB.Recordset 'instanciation de l'objet de type requête
list_ko.Refresh
On Error GoTo diso
list_ko.Clear 'vider le contenu
tabla_remplir.Open sql_ko, bazy, adOpenKeyset, adLockReadOnly 'execution de la requête
With list_ko
    If tabla_remplir.RecordCount = 0 Then
        bazy.Close
        Exit Sub 'le nombre d'enregistrement est 0
    Else
        tabla_remplir.MoveFirst 'positionner sur la première enregistrement
        While Not tabla_remplir.EOF 'parcourir jusqu'à la fin de l'enregistrement
            .AddItem (tabla_remplir.Fields(champ_ko)) 'ajout de chaque champ défini
            tabla_remplir.MoveNext 'positionner sur l'enregistrement suivant
        Wend
    End If
End With
On Error Resume Next
tabla_remplir.Close 'fermer la requête séléction
Set tabla_remplir = Nothing
bazy.Close
Exit Sub
diso:
MsgBox Error & vbCrLf & "Votre requête était : " & sql_ko, vbMsgBoxRtlReading + vbExclamation, ""
bazy.Close
End Sub

'methode d'ajout de données d'une texte dans une seul champ d'une table
Public Sub Ajouter_un_seul_champ(champ_ko As String, valeur As String, list_ko As Control)
Call Connect_Database(chemin_base_de_donnees)
Set tabla_ajout = New ADODB.Recordset
On Error GoTo diso
    With tabla_ajout
        .Open "INSERT INTO " & champ_ko & "(`" & champ_ko & "`) VALUES('" & Replace(premier_Majuscule(valeur), "'", Chr(146)) & "');" _
        , bazy, adOpenDynamic, adLockPessimistic 'insertion de la nouvelle valeur
    End With
    MsgBox "Enregistrement réussi !", vbInformation, ""
Set tabla_ajout = Nothing
bazy.Close
list_ko.SetFocus
Exit Sub
diso:
MsgBox Error & vbCrLf & vbCrLf & "Recommencez s'il vous plait !", vbCritical, ""
bazy.Close
End Sub

'recuperer un champ à partir d'une requete
Public Function extrait_enregistrement(sql_ko As String, champ_ko As String) As String
Call Connect_Database(chemin_base_de_donnees)
Set tabla_extract = New ADODB.Recordset
On Error Resume Next
tabla_extract.Close
On Error GoTo diso
    With tabla_extract
        .Open sql_ko, bazy, adOpenDynamic, adLockReadOnly
        If .RecordCount <> 0 Then
            .MoveFirst
            extrait_enregistrement = .Fields(champ_ko) 'récupération du renseignement
        End If
    End With
On Error Resume Next
tabla_extract.Close
Set tabla_extract = Nothing
bazy.Close
Exit Function
diso:
MsgBox Error & vbCrLf & "Votre SQL etait : " & sql_ko, vbCritical + vbMsgBoxRtlReading, ""
bazy.Close
End Function

'méthode qui recherche une valeur dans une control list ou combo
Public Sub pointer_sur(list_ko As Control, valeur As String)
On Error Resume Next
For k = 0 To list_ko.ListCount - 1
    If CStr(list_ko.List(k)) = valeur Then 'on recherche cette valeur
        list_ko.Text = list_ko.List(k)
    End If
Next k
End Sub

'méthode qui affiche les renseignements personnels d'une matricule dans une fenêtre donnée
Public Sub appeller_form(form_ko As Form, matricule As String)
Call form_ko.Combo2_GotFocus 'remplir d'abord les services
Call form_ko.Combo1_GotFocus 'remplir les matricules après
Call Module1.pointer_sur(form_ko.Combo1, matricule) 'positionner sur le matricule défini
Call form_ko.Combo1_Click 'afficher les renseignements correspondantes
End Sub

'fonction qui renvoi la première lettre en majuscule
Public Function premier_Majuscule(texte As String) As String
On Error Resume Next
premier_Majuscule = UCase(Left(texte, 1)) & Right(texte, Len(texte) - 1)
End Function

Conclusion :


C'est un logiciel complet. Vous pouvez la modifiée selon votre besoin (c'est le but de cette partage).
Soyez, quand même, clément sur les REMARQUES/COMMENTAIRES parce que c'est mon premier programme en tant que débutant.

Pour les débutants : "Visualiser seulement vos problèmes comme du variable et des valeurs : Il peut prendre la forme d'un simple texte, une matrice (tableau) de nombres, une fonction personnalisée ou même une objet (contrôles avec des propriétés)! Vous êtes le magicien de l'information!

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

ravorasolofo
Messages postés
14
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
11 août 2013
-
Slt JLCAMARA!
dans le code ....

bazy.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & chemin, Environ("USERNAME"), "mot de passe" 'Connection vers le fichier Ms-Access

... et le mot de passe est : "mot de passe"

Mais à voir surtout la version corrigé de la même code_déposée!
Bonjour,

Merci pour ces astuces, je vais tester le code.

Par contre, les bases Access demandent un mot de passe que je ne trouve pas. Peux tu me le communiquer stp ? Merci beaucoup.
ravorasolofo
Messages postés
14
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
11 août 2013
-
Bonjour!
Merci du conseil!
Nous sommes francophones mais ne maîtrise pas parfaitement cette langues, donc pas de souci de ce côté là!
Je veux seulement que vous y arriverez à me comprendre!
A+!
cs_Danette
Messages postés
54
Date d'inscription
mardi 23 juillet 2002
Statut
Membre
Dernière intervention
16 septembre 2008
-
Je veux bien être clément sur "les REMARQUES/COMMENTAIRES parce que c'est mon premier programme en tant que débutant", mais ce n'est pas toujours évident de comprendre tes commentaires à cause de cetaines, même beaucoup, de fautes d'orthographes et d'accords. Pour le programme en lui-même je vais tester tout ça. Excuse moi mais ça me fais mal aux yeux. Sans rancunes, personne n'est parfait et moi non plus...
ravorasolofo
Messages postés
14
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
11 août 2013
-
Re-bonjour à tous les fans!
Vous avez dû remarquez que ce variable n'est pas utilisée dans n'importe quel code?
-----> Public info_supplementaire() As Variant
Je voulais l'utiliser dans la liste des matériels à exécuter sur un même personne et même type d'opération! (dans l'interface mère)
L'algorithme était le suivant :
parcourir la liste des matériels
si une liste est sélectionnez alors ajouter dans cette variable l' id_possession correspondante!
ajouter ensuite en fonction des sélections les opérations de même nature!
Mais ce sera dans la nouvelle version! (avec plus de compléments)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.