2012-05-17 3 views
0

Mon application, créée à l'origine dans la victoire XP en utilisant VB6, programme stocke des valeurs spécifiques dans le Registre. L'une de ces valeurs est l'emplacement de la base de données utilisée par le programme. L'utilisateur peut le placer où bon lui semble et le programme le lance en premier lieu sur l'écran d'emplacement db avec les dernières valeurs enregistrées dans le registre. Ce formulaire utilise DriveListBox, DirListBox et les composants FileListBox. Lors de l'exécution de cette application sur Win 7, j'obtiens une erreur en essayant de définir la liste de dir à la valeur stockée dans le registre qui est un lecteur réseau. Tout cela fonctionne bien si le lecteur sur lequel le db est stocké est local.base de données défini par l'utilisateur emplacement

Le code est:

On Error GoTo HandleError 
    dbLocation = GetSetting(App.Title, "Settings", "DBLocation", dbserver) 
    If dbLocation = dbserver Then 
    Dir1.Path = GetSetting(App.Title, "Database", "ServerDBPath", "C:\") <----- fails 
    Else 
    Dir1.Path = GetSetting(App.Title, "Database", "LocalDBPath", "C:\") 
    End If 
    Drive1.Drive = Dir1.Path 
    Exit Sub 
HandleError: 
    MsgBox "Error connecting to the network. Check network connections and try again.", vbOKOnly, "Connection error" 
    Drive1.Drive = "C:\" 

Je soupçonnais le problème est avec la liste des répertoires. Si je supprime mon traitement d'erreur, l'erreur renvoyée est « Device Unavailabe »

Des idées sur ce qui se passe? Les composants que j'utilise ne sont-ils pas valables pour win 7? Pour cette application, la base de données doit être sur un lecteur réseau afin qu'il soit accessible à partir de plusieurs PC exécutant le programme. Tous les ordinateurs sont en cours d'exécution sur Windows 7.

+1

sons aussi simple que la lettre de lecteur non cartographié dans le contexte de l'utilisateur du programme est en cours d'exécution sous. Les versions modernes de Windows ont des sessions de «split token» et les gens font souvent la carte pour le contexte d'administration mais pas pour le contexte standard ou vice versa. – Bob77

+1

Quelle est la valeur de chemin réelle que vous essayez de définir? Le – Deanna

Répondre

0

En ce qui concerne les dll pour VB6 fournis dans Windows 7, voir http://msdn.microsoft.com/en-us/vstudio/ms788708.aspx

GetSetting est un appel VB6 au registre. Windows 7 sur une machine 64 bits déplacé l'emplacement du registre pour les applications 32 bits à quelque chose comme WOW3264.

+0

GetSetting semble fonctionner, l'exception se produit lors de la mise à la valeur Froe le registre dans la zone de liste dir, mais seulement quand un disque de travail net est impliqué. Je lance cette application sur une version win 7-32 bits en ce moment, pour ne pas dire qu'elle ne finira pas sur une version 64 bits. – roc

+0

je dois rechercher ce que WOW3264 est, ne pense pas que j'en ai entendu parler – roc

1

Le lecteur, le répertoire et le contrôle des fichiers qui viennent avec VB6 sont désespérément obsolète. Ils n'ont pas beaucoup changé depuis VB3 - et c'était au milieu des années 90. Ceux-ci ont été conçus pour une utilisation avec Windows 3.1! Il vaudrait mieux utiliser les dialogues Open File et Save File qui accompagnent la bibliothèque Common Dialogues.

Questions connexes