![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
Bonjour le forum
Voilà je vous explique mon problème. Des utilisateurs remplissent par le moyen d'un formulaire des données. Mon but est de transférer les données de la veille dans un fichier qui reste fermé par ADO. Jusque là tout va bien tant que le fichier est sur un répertoire commun et utilisable par tout le monde. Mais mon but serait que ces données soient transférées sur un répertoire d'un serveur qui n'est accessible que par 1 personne (celle qui gérera les données). J'aimerais si c'est posible indiquer à un moment donné le login et le password de la personne autorisée dans l' ado.connection pour pouvoir copier les données dans ce fichier mais je ne trouve pas la syntaxe. Merci d'avance aux pros de l'ADO Pascal |
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
Bonsoir Pascal,
tu trouveras la modification ou création d'un mot de passe en ADO sur le "pavé" microsoft: "migration de DAO vers ADO: utilisation de l'ADO avec le fournisseur jet (132 pages) j'ai trouvé ceci pour sécuriser au niveau du partage, page 7 Dim cnn as ADODB.connection set cnn=new adodb.connection cnn.open "provider=microsoft.jet.oledb.4.0;" & _ "data source=. tonfichier;" & _ "jet oledb:database password=ton mdp;" Par contre je n'ai pas trouvé d'identifiant en espérant d'avoir été utile Michel |
|
|
#3 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Michel
Merci de t'être penché sur le problème. Je vais regarder ce que tu me proposes mais j'ai un peu peur. Le problème avec les répertoires partagés sur serveur c'est que c'est le login de la personne qui donne le droit ou non d'accéder au répertoire. M'enfin je vais essayé avec le mdp. Merci encore. Pascal |
|
|
#4 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Pascal, Michel, le Forum Vite fait pendant mon café, Pascal tu ne précises pas ton OS de Serveur (Win 2000 / 2003 ?... Unix) Perso, je travaille sous Win et je ne vois pas vraiment comment par macro faire changer le Log-In du User sans avoir aucun Pop-Up de changement de User/Password et même si tu y arrivais, si tu as des règles de changements de Password à intervals réguliers... En fait je calcule toujours le risque, donc au mieux : si tu travailles 100% VBA, par ADO, je ne vois pas vraiment le risque, vu que le User ne verra jamais rien, se sera totalement transparent pour lui il ne saura jamais où se trouve ce répertoire... (tu vérouilles le projet) Moi je laisserai simplement l'accès "Read/Write" à ce fameux répertoire à tous les users susceptibles de faire tourner ton appli... De toutes manières, tu devrais aussi avoir un BackUp, donc franchement le risque est vraiment minime... Enfin, donc au pire, si jamais tu arrives à faire passer le Log-In / Password du NetWork Admin dans le Code VBA et que tu as à faire à un petit malin dans ta boite... Imagine qu'il connaisse Acyd et qu'il s'octroie le status Admin.... Là les risques sont bien plus craignos.... Enfin ce n'est que mon opinion... Bonne Journée à tous et toutes @+Thierry |
|
|
#5 (permalink) |
|
Guest
Messages: n/a
|
Salut Thierry
Mon OS serveur c'est Windows 200 serveur. Je comprends ce que tu veux dire mais le problème chez nous n'est pas trop avec les petits malins qui peuvent déplomber les macros mais plutôt d'effacer des répertoires par inadvertance. En fait plusieurs personnes rempliront les données mais une seule en fera les stats. Donc je désirais si c'etait possible alimenter un fichier qui soit directement sur le répertoire personnel de la personne et non sur un répertoire commun à toute la boite. Pour le backup pas de problèmes on fait attention à ce niveau mais je peux encore perdre une journée de job . M'enfin c'est mieux que rien. Merci pour tes remarques. Pascal |
|
|
#6 (permalink) |
|
Guest
Messages: n/a
|
Re Pascal, Michel, le Forum
Je pense que tu es admin sous Win 2000 Server, tu peux paramétrer l'accès à ce répertoire en différents niveaux (de mémoire... suis encore à la maison là... lol): Full Control Modify Write Read (il doit y en avoir d'autres...) A mon avis le Read/Write ne permet rien d'autres que de mettre à jour un fichier ou d'en créer un (mais pas de supprimer des répertoires, ni même des fichiers) Bon Journée (suis à la bourre lol) @+Thierry |
|
|
#7 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Pascal, Thierry, Forum
Rien à Proposer puisqu'il s'agit d'un pb Win 2000 qui me dépasse... Ce qui serait sympa, Pascal, c'est de copier-coller ton listing d'écriture ADO car je bosse là-dessus. Si ca t'interesse, j'avais pondu pour moi une maquette que Thierry avait vu. Quant à ADO, je laisse tomber pour DAO car je ne travaille qu'avec office: + rapide, + de docs, + de bibliothèque, on peut ouvrir plusieurs bases de données (sous XL: plusieurs classeurs) A+ Michel |
|
|
#8 (permalink) |
|
Guest
Messages: n/a
|
Re bonjour
Michel je te donne mon code si cela t'interresse bien qu'il n'y ait rien de top dedans. Il faut juste savoir que mes feuilles ont un nom identique dans les 2 classeurs. Sub ExporterDonnees() Dim objConn As ADODB.Connection Dim szConnect As String Dim szSQL As String Dim MaDate As Date Dim MonHeure As Date Dim MonNom As String Dim monid As String Dim monpwd As String szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & _ "\\sv_fichiers\commun\partage de fichiers entre services\Accueil\Stats\Stats.xls" & ";" & _ "Extended Properties=""Excel 8.0;HDR=No;"";" Set objConn = New ADODB.Connection objConn.Open szConnect For Each ws In Worksheets If ws.Name = "Accueil" Or ws.Name = "Telephone" Then Mafeuille = ws.Name MaLigne = Workbooks("AccueilCatherine.xls").Sheets(Mafeuille ).Range("A65536").End(xlUp).Row For x = 2 To MaLigne If Sheets(Mafeuille).Range("A" & x) <> Date Then MaDate = Sheets(Mafeuille).Range("A" & x) MonHeure = Sheets(Mafeuille).Range("B" & x) MonNom = Sheets(Mafeuille).Range("C" & x) szSQL = "INSERT INTO [" & Mafeuille & "$] " & _ "VALUES ('" & MaDate & "', '" & MonHeure & "', '" & MonNom & "')" objConn.Execute szSQL, , adCmdText Or adExecuteNoRecords Else Exit For End If Next x Application.ScreenUpdating = False For x = MaLigne To 2 Step -1 If Sheets(Mafeuille).Range("A" & x) <> Date Then Sheets(Mafeuille).Rows(x).Delete Next Application.ScreenUpdating = True End If Next ws objConn.Close Set objConn = Nothing End Sub Mersi de t'être penché sur le problème Pascal |
| Liens sociaux |
| Outils de la discussion | |
|
|