Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ajouter une condition dans mon code

21 réponses
Avatar
fth
Bonjour,
ci-dessous le code que j'utilise pour migrer des appli de 97 à 2003, creer
les repertoires etc..
j'ai de temps en temps une erreur parce que le rep n'est pas accessible ou
parce qu'une appli demande un mot de passe;
Je cherche donc à mettre qq conditions:
si le rep n'existe pas, passer au suivant;
Si la db demande un mot de passe, passer à la suivante;

l'objectif est de miger tout ce qui peut l'être et de faire du cas par cas
pour les autres.
restera juste à implementer qq chose pour savoir lesquelles;
j'ai deja un champ (migOk) qui doit passer à 'Yes' si tout est en ordre, ça
pourra m'aider.

Reste donc à implementer les conditions aux bons endroits...

Une idée?

d'avance merci

Frédéric

10 réponses

1 2 3
Avatar
Fabien
Salut
et avec un On Error Resume Next ? ça ne ferait pas l'affaire
"fth" a écrit dans le message de news:

Bonjour,
ci-dessous le code que j'utilise pour migrer des appli de 97 à 2003, creer
les repertoires etc..
j'ai de temps en temps une erreur parce que le rep n'est pas accessible ou
parce qu'une appli demande un mot de passe;
Je cherche donc à mettre qq conditions:
si le rep n'existe pas, passer au suivant;
Si la db demande un mot de passe, passer à la suivante;

l'objectif est de miger tout ce qui peut l'être et de faire du cas par cas
pour les autres.
restera juste à implementer qq chose pour savoir lesquelles;
j'ai deja un champ (migOk) qui doit passer à 'Yes' si tout est en ordre,
ça pourra m'aider.

Reste donc à implementer les conditions aux bons endroits...

Une idée?

d'avance merci

Frédéric



Avatar
fth
probablement, j'ai pas essayé ...
je mets ça ou?

Merci

Frederic

"Fabien" <..> wrote in message
news:42e60a53$0$3112$
Salut
et avec un On Error Resume Next ? ça ne ferait pas l'affaire
"fth" a écrit dans le message de news:

Bonjour,
ci-dessous le code que j'utilise pour migrer des appli de 97 à 2003,
creer les repertoires etc..
j'ai de temps en temps une erreur parce que le rep n'est pas accessible
ou parce qu'une appli demande un mot de passe;
Je cherche donc à mettre qq conditions:
si le rep n'existe pas, passer au suivant;
Si la db demande un mot de passe, passer à la suivante;

l'objectif est de miger tout ce qui peut l'être et de faire du cas par
cas pour les autres.
restera juste à implementer qq chose pour savoir lesquelles;
j'ai deja un champ (migOk) qui doit passer à 'Yes' si tout est en ordre,
ça pourra m'aider.

Reste donc à implementer les conditions aux bons endroits...

Une idée?

d'avance merci

Frédéric







Avatar
Eric
Bonjour Frédéric,

Pour savoir si le rep existe, utiliser la fonction Dir(), peut-être,
du genre :
Sub TestDir()
If Dir("C:Documents and SettingsEricMes
documentseXoRBourse25", vbDirectory) <> "" Then
MsgBox "Existe"
Else
MsgBox "Existe pas"
End If
End Sub

Ce qui intégré à ton code deviendrait :
While Not rst.EOF
If Dir(rst!AppliPath, vbDirectory) <> "" Then ' <------

NewMigPath = "d:MigAppli" & Mid(rst!AppliPath, 4)
SHCreateDirectoryEx Me.hwnd, NewMigPath, ByVal 0&
FileCopy rst!AppliPath & "" & rst!AppliName, _
NewMigPath & "" & rst!AppliName
MyAcc.ConvertAccessProject NewMigPath & "" & rst!AppliName, _
NewMigPath & "" & Left(rst!Appliname,len(rst!appliname)-4) _
"2000.mdb", _
acFileFormatAccess2000

End If ' <------------------
rst.MoveNext
Wend

(PS:je n'ai pas indenté pour que ca reste lisible à l'écran)

Pour ce qui est de la demande du MdP je passe mon tour ou alors faire
une gestion d'erreur et en fonction shunter la migration comme pour le
rep inexistant.

Bonjour,

j'ai de temps en temps une erreur parce que le rep n'est pas accessible ou
parce qu'une appli demande un mot de passe;
Je cherche donc à mettre qq conditions:
si le rep n'existe pas, passer au suivant;
Si la db demande un mot de passe, passer à la suivante;

Reste donc à implementer les conditions aux bons endroits...

Une idée?

d'avance merci

Frédéric




--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
re,

Au tout début de ta procédure mais bon c'est risqué car tu vas shunter
(court-circuiter) toutes les erreurs et perso, je préfère les gerer sauf
cas très particuier.

probablement, j'ai pas essayé ...
je mets ça ou?

Merci

Frederic



--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
fth
Re B'jour!
Heuuu, j'avais pas mis le code comme indiqué ..
Sorry!

(Eric, tu vas reconnaitre certaines choses!!!!)

D'avance merci

NB: le On error pourrais etre la solution mais ça ne regle pas le probleme
des db avec mots de passes...

Private Sub copyFile_Click()
Dim MyAcc As Access.Application
Set MyAcc = New Access.Application
Dim rst As DAO.Recordset
Dim strSQL As String

strSQL = "SELECT AppliPath, AppliName From NetworkSearchAppli "
strSQL = strSQL & "WHERE peridicity between '1' AND '3';"

Set rst = CurrentDb.OpenRecordset(strSQL)


If rst.BOF And rst.EOF Then
Set rst = Nothing

End If

' remplir un recordset sur la table appli
' boucler sur le recordset pour créer les rep et convertir les bds

'Tester si rst ne contient pas d'enregistrements (Bof & Eof) et
'sortir le cas échéant
While Not rst.EOF ' sinon
NewMigPath = "d:MigAppli" & Mid(rst!AppliPath, 4)
SHCreateDirectoryEx Me.hwnd, NewMigPath, ByVal 0&
FileCopy rst!AppliPath & "" & rst!AppliName, _
NewMigPath & "" & rst!AppliName
MyAcc.ConvertAccessProject NewMigPath & "" &
rst!AppliName, _
NewMigPath & "" & Left(rst!AppliName,
Len(rst!AppliName) - 4) _
& "AC2003.mdb", _
acFileFormatAccess2002
Me.MigOK = yes
rst.MoveNext
Wend
MyAcc.Quit
Set MyAcc = Nothing
Set rst = Nothing
End Sub



"fth" wrote in message
news:
Bonjour,
ci-dessous le code que j'utilise pour migrer des appli de 97 à 2003, creer
les repertoires etc..
j'ai de temps en temps une erreur parce que le rep n'est pas accessible ou
parce qu'une appli demande un mot de passe;
Je cherche donc à mettre qq conditions:
si le rep n'existe pas, passer au suivant;
Si la db demande un mot de passe, passer à la suivante;

l'objectif est de miger tout ce qui peut l'être et de faire du cas par cas
pour les autres.
restera juste à implementer qq chose pour savoir lesquelles;
j'ai deja un champ (migOk) qui doit passer à 'Yes' si tout est en ordre,
ça pourra m'aider.

Reste donc à implementer les conditions aux bons endroits...

Une idée?

d'avance merci

Frédéric



Avatar
Eric
As-tu déja testé pour le prob de répertoire avec ce que je t'ai donné
sur le post de 12:10 en enlevant bien sur ton On Error Resume Next ?

Quand la proc te demande le mot de passe, cela se présente comment ?
Une boite de saisie ?
Un message d'erreur ?
Sur quelle ligne ca plante (celle-ci je suppose :
MyAcc.ConvertAccessProject) ?

--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
fth
Dans l'ordre:

Quand la proc te demande le mot de passe, cela se présente comment ?
Une boite de saisie ?
oui

Un message d'erreur ?
Non

Sur quelle ligne ca plante (celle-ci je suppose :
MyAcc.ConvertAccessProject) ?
ça en réalité je n'en sais rien, je click sur mon bouton et go ...




--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


Avatar
Eric
re,

Quand la proc te demande le mot de passe, cela se présente comment ?
Une boite de saisie ?


oui



Et si tu valides sans rien mettre ou que tu annules
qu'obtiens-tu comme Erreur (Numéro et msg d'erreur
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


Avatar
fth
En fait, viens un moment ou tout se bloque ...


"Eric" wrote in message
news:
re,

Quand la proc te demande le mot de passe, cela se présente comment ?
Une boite de saisie ?


oui



Et si tu valides sans rien mettre ou que tu annules
qu'obtiens-tu comme Erreur (Numéro et msg d'erreur
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
fth
Re bonjour Eric,

EN fait, voici ce qu'il faudrait que je fasse:
dans le code ci-dessous, le fichier est copié dans le nouveau repertoire
puis migré.
L'ennui est que ça allourdit terriblement le nv repertoire.

Comment faire donc pour juste migrer vers le nv rep sans copier la base?

voir remarque dans le code.

D'avance merci

Frédéric

Private Sub copyFile_Click()

On Error Resume Next

Dim MyAcc As Access.Application
Set MyAcc = New Access.Application
Dim rst As DAO.Recordset
Dim strSQL As String

strSQL = "SELECT AppliPath, AppliName From NetworkSearchAppli "
strSQL = strSQL & "WHERE peridicity between '1' AND '3';"

Set rst = CurrentDb.OpenRecordset(strSQL)


If rst.BOF And rst.EOF Then
Set rst = Nothing

End If

' remplir un recordset sur la table appli
' boucler sur le recordset pour créer les rep et convertir les bds

'Tester si rst ne contient pas d'enregistrements (Bof & Eof) et
'sortir le cas échéant
While Not rst.EOF ' sinon
NewMigPath = "d:MigAppli" & Mid(rst!AppliPath, 4)
SHCreateDirectoryEx Me.hwnd, NewMigPath, ByVal 0&
' ne pas faire cette action
FileCopy rst!AppliPath &
"" & rst!AppliName, _






NewMigPath & "" & rst!AppliName
' je pense plutot mettre rst!AppliPath à la place de 'NewMigPath ' pour
éviter la copie et mettre en suspens la partie FileCopy. Qu'en penses tu?
MyAcc.ConvertAccessProject NewMigPath & "" &
rst!AppliName, _






NewMigPath & "" & Left(rst!AppliName,
Len(rst!AppliName) - 4) _
& "AC2003.mdb", _
acFileFormatAccess2002
Me.MigOK = yes
rst.MoveNext
Wend
MyAcc.Quit
Set MyAcc = Nothing
Set rst = Nothing
End Sub


"Eric" wrote in message
news:
re,

Quand la proc te demande le mot de passe, cela se présente comment ?
Une boite de saisie ?


oui



Et si tu valides sans rien mettre ou que tu annules
qu'obtiens-tu comme Erreur (Numéro et msg d'erreur
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr







1 2 3