1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
| Sub RequeteAlimCABProd
Dim oDBContext As Object , oDB As Object , oBase As Object
Dim oStatement As Object , oRequeteCA As Object
Dim strSQLCA As String , Fichier As String
Dim Ientifian as String
Dim monDocument As Object
Dim ListeDesFeuilles as Object
Dim FCAProd As Object
Dim cel_obj As Object
dim i as long
dim FinJ as integer
dim J as integer
'J'initialise les feuilles
monDocument = ThisComponent
ListeDesFeuilles = monDocument.Sheets
FCAProd = ListeDesFeuilles.getByName("CA_Prod")
Dim Dlg3 As Object, bibli3 As Object, monDialogue3 As Object, TypeDB as string, TypeDBList (3) as string
TypeDBList (0) = "dbase"
TypeDBList (1) = "jdbc"
TypeDBList (2) = "mysql"
TypeDBList (3) = "postgresql"
BasicLibraries.LoadLibrary("Standard") 'Chargement des bibliothèques
DialogLibraries.LoadLibrary("Standard")
bibli3 = DialogLibraries.GetByName("Standard")
monDialogue3 = bibli3.GetByName("Dialog3") 'Accès au dialogue
Dlg3 = CreateUnoDialog(monDialogue3) 'Exécution du dialogue
' -- Bouton OK
Dlg3.getControl("CommandButton1").Label ="OK"
Dlg3.getControl("CommandButton1").Model.Align = 1
' -- Bouton Annuler
Dlg3.getControl("CommandButton2").Label ="Annuler"
Dlg3.getControl("CommandButton2").Model.Align = 1
' -- choix par défaut = TypeDBList (3) = "postgresql"
Dlg3.getControl("ComboBox1").text ="postgresql"
Dlg3.getControl("ComboBox1").Model.Align = 1
' -- liste de selection
Dlg3.setTitle("Type de Base de donnée")
Dlg3.getControl("ComboBox1").addItems(TypeDBList, 0)
'Lance l'exécution de la boite de dialogue
Dlg3.execute
TypeDB = Dlg3.getControl("ComboBox1").text 'Récupère le choix
'Demande les paramètres de connexion à la base postgres, car celle choisit par défaut, le type de base peut être changé.
'Demande l'identifiant de connection à la base de donnée, par défaut: "Nom de la base de donnée"
mabase = InputBox ("Nom de la base de Donnée?", "Mabase?" , "Nom de la base de donnée")
'Demande l'identifiant de connection à la base de donnée, par défaut: "127.0.0.1"
adresseIP = InputBox ("Adresse IP du serveur SQL?", "Adresse IP?", "127.0.0.1")
'Demande l'identifiant de connection à la base de donnée, par défaut: "5432"
port = InputBox ("Port de connexion au serveur SQL?", "Port SQL?", "5432")
'Demande l'identifiant de connection à la base de donnée, par défaut: "postgres"
Identifiant = InputBox ("Identifiant de connexion à la base de Donnée", "Identifiant", "postgres")
'test si un des paramètre de connexion est manquant.
if mabase="" then
goto MabaseEnd
end if
if adresseIP = "" then
goto AdresseIPEnd
end if
if port = "" then
goto PortEnd
end if
if Identifiant = "" then
goto IdPEnd
end if
'crée une boite de dialogue pour demander le mot de passe
'Attention, la boite de dialogue est aussi à créer en cliquant droit dans l'onglet en bas de l'éditeur de macro sur "module", puis "Insérer" et "Boite de dialogue BASIC".
'il faut ensuite ajouter les éléments suivant (bouton * 2, 1 zone de texte et 1 champ d'étiquette qui correspond, ici, au Label1)
'Dans le bouton "OK", il faut aller dans propriété et aller à la ligne "Type de bouton" pour sélectionner "OK". Si vous ne le faite pas, le bouton sera inerte.
'Dans le bouton "Annuler", il faut aller dans propriété et aller à la ligne "Type de bouton" pour sélectionner "Annuler". Si vous ne le faite pas, le bouton sera inerte.
'Dans la zone de texte, il faut aller dans propriété et aller à la ligne "Caractère pour mot de passe" et metter ce que vous voulez. j'ai mis "*". Si vous ne le faite pas, le texte apparîtra en claire à l'écran.
'Attention, il n'y aura pas d'autre sécurité que le fait de ne pas pouvoir lire le mot de passe tapé.
Dim Dlg As Object, bibli As Object, monDialogue As Object, MotDePasse as string
BasicLibraries.LoadLibrary("Standard") 'Chargement des bibliothèques
DialogLibraries.LoadLibrary("Standard")
bibli = DialogLibraries.GetByName("Standard")
monDialogue = bibli.GetByName("Dialog2") 'Accès au dialogue
Dlg = CreateUnoDialog(monDialogue) 'Exécution du dialogue
' -- Bouton OK
Dlg.getControl("CommandButton1").Label ="OK"
Dlg.getControl("CommandButton1").Model.Align = 1
' -- Bouton Annuler
Dlg.getControl("CommandButton2").Label ="Annuler"
Dlg.getControl("CommandButton2").Model.Align = 1
' -- label
Dlg.getControl("Label1").text ="Veullez saisir votre mot de passe"
Dlg.getControl("Label1").Model.Align = 1
' -- Boite
Dlg.setTitle("Mot de Passe")
'Lance l'exécution de la boite de dialogue
Dlg.execute
MotDePasse = Dlg.getControl("TextField1").text 'Récupère le texte saisi
'se connecte à la base de donnée
sURL = "sdbc:" & TypeDB & ":dbname=" & mabase & " hostaddr=" & adresseIP & " port=" & port &" user=" & Identifiant &" password=" & MotDePasse
oDBContext = CreateUnoService("com.sun.star.sdbc.DriverManager")
oBase = oDBContext.getConnection(sURL)
oStatement = oBase.createStatement()
'strSQLCA = "Requette SQL sur une seul ligne"
strSQLCA = "Select CA.code, CA.libelle, Client.name From codeA as CA LEFT JOIN Client ON Client.id = CA.id_client Where Client.id > 40 ORDER BY CA.code, Client.name"
'exécute la requete SQL pour CA_prod
oRequeteCA = oStatement.executeQuery( strSQLCA )
i = 0
FinJ = 7
'écrit la première ligne => Header
cel_obj = FCAProd.getCellByPosition(0, 0)
cel_obj.string = "code"
cel_obj = FCAProd.getCellByPosition(1, 0)
cel_obj.string = "libelle"
cel_obj = FCAProd.getCellByPosition(2, 0)
cel_obj.string = "Nom_Client"
'Stoque le résultat dans la feuille CA_prod
If Not IsNull(oRequeteCA) Then
While oRequeteCA.next
i = i + 1
for j = 1 to FinJ
cel_obj = FCAProd.getCellByPosition(j - 1, i)
cel_obj.string = oRequeteCA.getString(j)
next
Wend
End If
oRequeteCA.Close
oStatement.Close
oBase.Close
oBase.Dispose
goto finSub
MabaseEnd:
MsgBox("Il faut indiquer le nom de la base de donnée, relancer la macro car elle se termine maintenant", 0, "Attention !!!")
goto finSub
AdresseIPEnd:
MsgBox("Il faut idiquer l'adresse du serveur SQL, relancer la macro car elle se termine maintenant", 0, "Attention !!!")
goto finSub
PortEnd:
MsgBox("Il faut renseigner le numéro de port pour accéder au serveur SQL, relancer la macro car elle se termine maintenant", 0, "Attention !!!")
goto finSub
IdPEnd:
MsgBox("Il faut indiquer un identifien de connexion pour accéder à la base de donnée, relancer la macro car elle se termine maintenant", 0, "Attention !!!")
goto finSub
msgbox "Terminé"
finSub:
end sub |
Partager