Pb avec le shell

Résolu
visualresine Messages postés 46 Date d'inscription vendredi 23 septembre 2005 Statut Membre Dernière intervention 31 janvier 2008 - 29 déc. 2005 à 16:13
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 3 janv. 2006 à 14:27
Bonjour,



Je tente d'ouvrir une base ACCESS avec le shell de la facon suivante :

FileName = "C:\Program Files\Microsoft Office\Office\MSACCESS.EXE C:\Bd_visual_resine.mdb /wrkgrp C:\System_p.mda"

Shell(FileName)

jusqu'ici tout va bien mais quand dans le chemin de la base de
données ( ou du fichier system) il y a des espaces ca ne
marche plus du tout !!



avez vous deja rencontré le probleme?



merci



Guillaume

17 réponses

ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
29 déc. 2005 à 16:57
FileName = "C:\Program Files\Microsoft Office\Office\MSACCESS.EXE " & Chr(34) & "C:\Bd_visual_resine.mdb" & Chr(34) & " /wrkgrp " & Chr(34) & "C:\System_p.mda" & Chr(34)

34 étant le code ASCII du caractère <<">> (guillemets anglais), la fonction "Chr" fournit le caractère correspondant au code ASCII fourni.

Ce n'est pas dit que ça fonctionne, mais ça devrait peut-être arranger les choses.

Au pire, au lieu d'utiliser les guillemets, utilise l'apostrophe << ' >>

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
3
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
29 déc. 2005 à 16:22
FileName = "C:\Program Files\Microsoft Office\Office\MSACCESS.EXE ""C:\Bd visual resine.mdb"" /wrkgrp C:\System_p.mda"

Avec cela, ca devrait etre ok.

CR

PS:Je te conseillerai plutot d'utiliser l'API ShellExecute, ce qui te permettra de ne pas avoir a te soucier du ficheir d'accès à l'éxecutable Access (juste le nom du ficheir à lui transmettre
0
visualresine Messages postés 46 Date d'inscription vendredi 23 septembre 2005 Statut Membre Dernière intervention 31 janvier 2008
29 déc. 2005 à 18:09
ca marche du feu de dieu!

merci!!!
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
30 déc. 2005 à 09:20
Pourquoi utiliser une concaténation avec Chr(34) (d'ailleur, mieux vaudrait utiliser Chr$(34) dans ce cas) alors qu'un simple doublement des guillemets dans la chaine de caractères suffit ? C'est faire des opération pour rien et cela ne simplifie pas du tout la lecture du code !!!

CR
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 déc. 2005 à 09:59
tout ce que j'espere, c'est que ton chemin C:\Program Files .... n'est pas en dur
0
visualresine Messages postés 46 Date d'inscription vendredi 23 septembre 2005 Statut Membre Dernière intervention 31 janvier 2008
30 déc. 2005 à 10:47
-j'ai essaie avec les double guillemet et ca n'a pas marcher

-c'est pas en dur, c'etait juste pour le test
0
visualresine Messages postés 46 Date d'inscription vendredi 23 septembre 2005 Statut Membre Dernière intervention 31 janvier 2008
30 déc. 2005 à 10:56
Apres un nouvel essai avec les double guillmet je vous imforme que ca marche!!
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
30 déc. 2005 à 19:39
Oulala !!! Autant pour moi !!!

Ben dit donc, on en apprend décidément tous les jours!!!

Alors comme ça il y a bel et bien des caractères d'échappement en VB !!! Moi qui avait déséspéré depuis un bail!!!

Mais dit donc Crenaud, tu nous sorts cette indo d'où ??? On te la dis ou alors tu la lue quelque part et dans ce cas, où diable as-tu bien pu lire une telle chose ????????

Juste une question : est-ce qu'il concatène ou alors est-ce vraiment un caractère d'échappement de vrai de vrai (le sais-tu) ???

Pi dit, t'en as d'autres des trucs comme ça ???

Renfield :
Dit, faudra vraiment m'expliquer un jour l'intérêt d'employer une fois CHR, une fois CHR$ et une autre fois CHRB (&co). Moi, olds-BASICeur, y'a bien toujours utilisé Chr$... Mais en arrivant en VB on m'a dit tout de suite "Hop là mon gar, te bile pas, on a tout simplifié.". Et toi (en qui j'ai une grande confiance ) tu n'arrêtes pas de nous dire d'employer les fonctions alternatives !!!
Alors, qu'est-ce que ces fonctions on de plus que les "génériques" ??? La vitesse je présume. Mais n'ont-elles pas elles-aussi des limites qui, si on n'en tiend pas compte, renderait leur utilisation mauvaise (un peu comme les types de le VB auto convertis...) ?
Enfin, perso, j'aimerais vraiment que tu éclaires ma conduite parce que je ne sais plus à quel saint me vouer !!!

Sinon, il serait vachement bien que le clan des brutes (en VB) nous pondent un petit grand tuto sur les fonctions de manipulations textuelles ne remplacant pas l'aide mais nous permettant de faire un bon tour d'horizon avec les avis des vrais "pros"! Qu'en dites-vous ?

Respect
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 déc. 2005 à 20:47
caractère d'echappement ? non, pas exactement... juste que pour afficher un guillemet dans une string, il faut la doubler....

il n'y as pas d'autre séquence particulière...



ChrB$ prend en entrée un octet

Chr$ un long ......



tout dépend ici du code de caractère que tu souhaite passer, si tu as un Byte, c'est interessant, sinon, non.....

Chr$ est à proviliégier la plupart du temps...


Renfield
Admin CodeS-SourceS - MVP Visual Basic
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
30 déc. 2005 à 21:19
Pour l'interet d'utiliser Chr$() au lieu de Chr(), celui qui t'as dit de laisser tomber le Chr$() ... s'est planté !! Chr() retourne un variant, qui sera implicitement convertit en string si tu fait un truc du genre Buffer = Chr(34) si Buffer est de type string. Chr$() -comme Left$(), Right$(), mid$() etc ...- retourne directement une string !! PAs de conversion d'un variant en string, donc mieux !!!

Pour le doublement du guillemet, je n'en rajouterai pas, Renfield ayant répondu à ma place (valait mieux ...)

CR
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
30 déc. 2005 à 21:45
C'est bien ce que je me disais (concernant le caractère d'échappement) !
Mais je me demande toujours d'où vous tirez cette info parce que franchement, cette foutue MSDN, j'y ai passé des dixaines d'heures le nez coller au plus profond de ses entrailles et je n'ai jamais rien lu de tel ! Alors peut-être est-ce dans la version on-line, peut-être pas. Mais quoi qu'il en soit je serais curieux de savoir (si vous vous en souvenez) d'où vous tirez ce truc... Parce que... qui sait encore combien d'autres trucs du genre (genre "arrêter de se prendre le choux avec des lignes de code à ralonge") le VB cache au commun des mortels !?!?

Renfield :

Question : Est-ce que "Chr" est la même chose que "Chr$"
ou pas (sinon, fait m'expliquer parce que je comprends plus rien!!!) ?
Et si oui, alors pourquoi mettre le périmé "$" (clareté du code, pseudo
rétro compatibilité, habitude ?) ???


Je ne suis pas certain de bien saisir... La MSDN nous dit ceci :

"Note : La fonction ChrB est utilisée pour traiter sous
forme d'octets les données d'une valeur de type String. Au lieu de
renvoyer un caractère codé sur un ou deux octets, la fonction ChrB
renvoie toujours un seul octet. La fonction ChrW renvoie une valeur de
type String contenant le caractère
<object id="alink_10" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_10.Click() ]Unicode, sauf sur les plates-formes qui
ne gèrent pas ce caractère. Dans ce cas, le comportement est le même que pour la
fonction Chr."
Autrement dit, Chr choisit, selon l'environnement (SBCS ou DBCS [Single/Double Byte Character Set]), le format renvoyé (1 ou 2 octects) et accèpte des bytes ou des longs en entré. Autrement dit, Chr fait le choix automatiquement. Autrement dit encore : c'est mieux lors de petites opérations (ne demandant pas d'optimisations particulières) pour ne pas se prendre la tête.
Moi j'ai quand même deux petites questions qui me trottent dans la tête...
Est-ce que toutes ces fonctions sont bien distinctes ou alors est-ce que le VB n'en lance qu'une seule (avec, en quelque sorte, un argument de sélection du traitement à effectuer) ???
Gagne-t-on vraiment en vitesse ???
Eh puis, lorsque tu me dis que "CHR$" est a privilégier la pluspart du temps... moi, je me pose des questions!!!
En effet, les codes ASCII/AINSI (j'ai d'ailleurs jamais bien saisi la différence!!!), y'en a bien que 256 !!! Du coup, on utilise bien toujours des Bytes en entré !!! Du coup, on devrait plutôt toujours utiliser ChrB non !?!?!? Parce qu'en plus, à part les contrôles Rich Text Box et celui du Browser de IE, tous les autres sont bien en "SBCS" non !?!?

Bref, tout ça pour dire que je comprends toujours pas très bien...
(wai, désolé, je sais, j'suis un peu chiant mais que voulez-vous... c'est mon seul moyen d'avancer )
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
30 déc. 2005 à 22:05
Voici un extrait de la MSDN (version 6.0a) fourni avec VS6 (pas la version online ! La version CD)

Impression de guillemets dans une chaîne
Il arrive que des chaînes de texte contiennent des guillemets (" ").

Elle dit, "Tu le mérites !"

Les chaînes affectées à une variable ou à une propriété étant délimitées par des guillemets (" "), vous devez doubler les guillemets contenus dans une chaîne si vous souhaitez qu'ils soient affichés au moment de l'exécution. Visual Basic interprète deux guillemets placés sur une même ligne comme un seul guillemet incorporé.

Par exemple, pour créer la chaîne précédente, utilisez le code suivant :

Text1.Text = "Elle dit, ""Tu le mérites !"" "
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
31 déc. 2005 à 08:07
Rubriaue "Utilisation du contrôle TextBox"... d'accord...
Comme quoi, y'a des astuces bien planquées un peu partout dans la MSDN !!! Dommage pour moi qu'ils n'aient pas mis cette info aussi ailleurs
... j'aurais gagné un sacré paquet de temps!!!

Un jour, faudrait quand même lister toutes ces "astuces" pour les newbies (comme moi ) !

En tous les cas, Crenaud, je n'ai qu'une chose à te dire pour ce tuyaux :
Do
Me.? "MERCI ";
Loop

Enjoy
<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
31 déc. 2005 à 08:48
pour ChrB, une autre nuance que tu pointe ici : elle renvoie un octet....



VB travaille avec des chaines en unicode, ChrB permet de travailler avec un caractère codé sur un seul octet.



en clair, pour voir un caractère sous VB, il faut faire :



strconv ( chrb$(65) , vbUnicode)



c'est un peu particulier, et reservé a certains usages, j'avoue ne
jamais m'en etre servi.... comme je te le disais, Chr$ est a préconiser
dans la plupart des cas..





quant a la difference entre Chr et Chr$ (et les fonctions ...$) Crenaud a bien repondu ^^

Renfield
Admin CodeS-SourceS - MVP Visual Basic
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
31 déc. 2005 à 09:20
Merci à vous-deux (pi désolé pour le croisement des messages concernant le CHR...) en tous cas!

Z'ets des chefs... les meilleurs

Merci
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
3 janv. 2006 à 13:21
Pour ce qui est du doublement des guillemets, je dois avouer que j'ai été obligé de le chercher un peu dans la MSDN avant de pouvoir t'en faire un copier-coller. Mais cette règle existe, de mémoire, depuis les toutes premières versions des langages de la famille BASIC et c'est avec un de ceux-la que j'ai commencé la programmation il y à plus de 20 ans (sur un ZX-80 !!)
Voila en vérité d'ou je tiens cette information

CR
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
3 janv. 2006 à 14:27
Ben tu vois, moi aussi j'ai commancé depuis le tout début (CPC464) et pourtant je ne connaissais pas ça comme quoi, l'info est - à mes yeux tout du moins - très précieuse!!!

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
0
Rejoignez-nous