OVH Cloud OVH Cloud

probleme de focus?

4 réponses
Avatar
fth
Bonjour,
J'utilise le code ci-dessous pour migrer automatiquement des db97 vers 2003.
Quelques questions:

1. il y a un petit soucis quand la db à migrer à besoins d'un mot de passe.
comme celle ci attend une réponse et n'est donc pas migrée, l'appli attend.
Je cherche à éviter ce probleme OU faire en sorte que quand un message genre
mot depasse apparait, celui ci passe à l'avant plan (ce qui n'est pas
toujours le cas.

2.j'ai un champ (MigOk) que j'aimerais passer à 'yes' quand la migration à
eu lieu. ce genre de proc ne me pose généralement pasz de soucis...sauf dans
ce bout de code.
Je gaffe kek part?

3. Est-ce normal qu'il n'y ai rien moyen de faire sur le pc qui traite cette
appli? ça semble très gourmand...

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 rst As Recordset
Dim strSQL As String

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

'Set rst = CurrentDb.OpenRecordset(strSQL)




Set rst = Me.Recordset

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 AppliPath & "\" &
rst!AppliName, _
NewMigPath & "\" & Left(rst!AppliName,
Len(rst!AppliName) - 4) _
& ".mdb", _
acFileFormatAccess2002
Me.MigOK = yes
rst.MoveNext
Wend
MyAcc.Quit
Set MyAcc = Nothing
Set rst = Nothing
End Sub

4 réponses

Avatar
Eric
re-Bonjour,

Bonjour,
J'utilise le code ci-dessous pour migrer automatiquement des db97 vers 2003.
Quelques questions:

1. il y a un petit soucis quand la db à migrer à besoins d'un mot de passe.
comme celle ci attend une réponse et n'est donc pas migrée, l'appli attend.
Je cherche à éviter ce probleme OU faire en sorte que quand un message genre
mot depasse apparait, celui ci passe à l'avant plan (ce qui n'est pas
toujours le cas.


Pour le point 1, je n'ai pas de solution autre que celle donnée
fin juillet (à savoir identifier les bd avec MdP et les
court-circuiter pour la conversion). De plus la fenêtre
demandant le mot de passe ne venant pas systématiquement au 1er
plan (focus), on ne pourrait pas utiliser la commande SendKeys.


2.j'ai un champ (MigOk) que j'aimerais passer à 'yes' quand la migration à
eu lieu. ce genre de proc ne me pose généralement pasz de soucis...sauf dans
ce bout de code.
Je gaffe kek part?


Pour le point 2 : je mettrai
Me.MigOK = True (*) au lieu de Me.MigOK = yes

(*)mieux : Me!MigOk = True


3. Est-ce normal qu'il n'y ai rien moyen de faire sur le pc qui traite cette
appli? ça semble très gourmand...



Pour le point 3 : je pense que la conversion d'un grand nombre
de bds du format Access97 vers Access2002 doit consommer la
quasi-totalité des ressources du processeur, ce qui explique que
tu ne peux faire autre chose pendant ce temps. (Il y a
conversion des objets (forms, états, macros et codes ...)


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

Avatar
fth
Salut Eric,

De fait, pour le champs MigOk, ça fonctionne. Merci.
Je cherche maintenant à faire en sorte que si la migration à fonctionné, ça
cohce MigOk, si ça n'as pas fonctionné (pas de fichier, erreurs) ça coche
autre chose (MigPasOk par exemple.)

ma difficulté est de savoir ou mettre ce code suplémentaire.

D'avance merci

Frédéric


"Eric" wrote in message
news:
re-Bonjour,

Bonjour,
J'utilise le code ci-dessous pour migrer automatiquement des db97 vers
2003.
Quelques questions:

1. il y a un petit soucis quand la db à migrer à besoins d'un mot de
passe. comme celle ci attend une réponse et n'est donc pas migrée,
l'appli attend.
Je cherche à éviter ce probleme OU faire en sorte que quand un message
genre mot depasse apparait, celui ci passe à l'avant plan (ce qui n'est
pas toujours le cas.


Pour le point 1, je n'ai pas de solution autre que celle donnée
fin juillet (à savoir identifier les bd avec MdP et les
court-circuiter pour la conversion). De plus la fenêtre
demandant le mot de passe ne venant pas systématiquement au 1er
plan (focus), on ne pourrait pas utiliser la commande SendKeys.


2.j'ai un champ (MigOk) que j'aimerais passer à 'yes' quand la migration
à eu lieu. ce genre de proc ne me pose généralement pasz de soucis...sauf
dans ce bout de code.
Je gaffe kek part?


Pour le point 2 : je mettrai
Me.MigOK = True (*) au lieu de Me.MigOK = yes

(*)mieux : Me!MigOk = True


3. Est-ce normal qu'il n'y ai rien moyen de faire sur le pc qui traite
cette appli? ça semble très gourmand...



Pour le point 3 : je pense que la conversion d'un grand nombre
de bds du format Access97 vers Access2002 doit consommer la
quasi-totalité des ressources du processeur, ce qui explique que
tu ne peux faire autre chose pendant ce temps. (Il y a
conversion des objets (forms, états, macros et codes ...)


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



Avatar
Eric
Bonjour Frédéric,

Pourquoi utiliser 2 champs MigOk et MigPasOk ?
Puisque MigOk est un booléen, s'il vaut vrai c'est que la migration a
été faite sinon il a été impossible de la réaliser.

N'ayant qu'Access2k,
je ne dispose pas de la méthode ConvertAccessProject mais tu dois
pouvoir regarder dans l'aide si cette méthode retourne des erreurs et
permet de les récupérer. Dans ce cas, faire une routine de gestion des
erreurs de conversion.

Sinon, il faut que tu modifies la procédure de la manière suivante:

1-Déclares une variable booléenne en début de procédure
Dim boolErr AS Boolean

2-Remplaces ton On Error Resume Next par un appel de procédure de
gestion d'erreur, à écrire avant les déclarations (Dim ...).
On Error Goto Traitement_Erreur

3-Sous le While Not rst.EOF (immédiatement dessous), mets :
boolErr = True

4-Encadres le Me!MigOk = True pour avoir :
If boolErr Then
Me!MigOk = True
End If
5-Sous le bloc
MyAcc.Quit
Set MyAcc = Nothing
Set rst = Nothing
mets :
Exit Sub
puis :
Traitement_Erreur:
'MsgBox Err.Number & " " & Err.Description
boolErr = False
Resume Next

et en dessous, tu dois avoir ton End Sub

PS: Tu me prends au dépourvu ;-) J'ai fait ça à main levée donc je suis
pas garant de l'existence de quelque chose mieux structuré et plus simple.


Salut Eric,

De fait, pour le champs MigOk, ça fonctionne. Merci.
Je cherche maintenant à faire en sorte que si la migration à fonctionné, ça
cohce MigOk, si ça n'as pas fonctionné (pas de fichier, erreurs) ça coche
autre chose (MigPasOk par exemple.)

ma difficulté est de savoir ou mettre ce code suplémentaire.

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
fth
Re bonjour,

Deux champs ce qui me permet de voir ceux qui on tété traité et le résultat.
j'ai intégré tes modifs et ça ne génere pas d'erreurs.
Je vais faire un test 'live' et te tiens au courant

bàt,

Frédéric



"Eric" wrote in message
news:%
Bonjour Frédéric,

Pourquoi utiliser 2 champs MigOk et MigPasOk ?
Puisque MigOk est un booléen, s'il vaut vrai c'est que la migration a été
faite sinon il a été impossible de la réaliser.

N'ayant qu'Access2k,
je ne dispose pas de la méthode ConvertAccessProject mais tu dois pouvoir
regarder dans l'aide si cette méthode retourne des erreurs et permet de
les récupérer. Dans ce cas, faire une routine de gestion des erreurs de
conversion.

Sinon, il faut que tu modifies la procédure de la manière suivante:

1-Déclares une variable booléenne en début de procédure
Dim boolErr AS Boolean

2-Remplaces ton On Error Resume Next par un appel de procédure de gestion
d'erreur, à écrire avant les déclarations (Dim ...).
On Error Goto Traitement_Erreur

3-Sous le While Not rst.EOF (immédiatement dessous), mets :
boolErr = True

4-Encadres le Me!MigOk = True pour avoir :
If boolErr Then
Me!MigOk = True
End If
5-Sous le bloc
MyAcc.Quit
Set MyAcc = Nothing
Set rst = Nothing
mets :
Exit Sub
puis :
Traitement_Erreur:
'MsgBox Err.Number & " " & Err.Description
boolErr = False
Resume Next

et en dessous, tu dois avoir ton End Sub

PS: Tu me prends au dépourvu ;-) J'ai fait ça à main levée donc je suis
pas garant de l'existence de quelque chose mieux structuré et plus simple.


Salut Eric,

De fait, pour le champs MigOk, ça fonctionne. Merci.
Je cherche maintenant à faire en sorte que si la migration à fonctionné,
ça cohce MigOk, si ça n'as pas fonctionné (pas de fichier, erreurs) ça
coche autre chose (MigPasOk par exemple.)

ma difficulté est de savoir ou mettre ce code suplémentaire.

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