IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Modification commande access(), problême à l'éxécution.


Sujet :

C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 119
    Points : 39
    Points
    39
    Par défaut Modification commande access(), problême à l'éxécution.
    Bonjour à tous,

    J'ai un TP à faire en C consistant à modifier la commande access(), en ignorant le F_OK. Je dois seulement gérer les 3 cas R_OK, W_OK, X_OK, pour en faire une commande console utilisable sous la forme :

    access -r -w fichier

    On doit de plus ajouter un autre argument "-v", permettant de donner une phrase expliquant l'erreur de access le cas échéant.

    Voici donc le code que j'ai pondu...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    #include <stdlib.h>
    #include <stdio.h>
    #include <limits.h>
    #include <unistd.h>
    #include <string.h>
    #include <errno.h>
     
    int main(int argc, char* argv[])
    {
    	char droit[15]; /*Permet de stocker les "mode" de la commande access*/
    	int i, status;
    	int verbose=0, r=0, x=0, w=0;
     
     
    	/*Cette boucle for permet de récupérer les arguments
    	excepte le dernier, puisque dans une commande correctement 
    	ecrite, celui-ci est le nom du fichier*/
    	for(i=2; i<(argc-1); i++){
    		if(!strcmp(argv[i],"-v")){
    			verbose=1;
    		}else if(!strcmp(argv[i],"-r")){
    			if(!r){
    				sprintf(droit, "%s%s", droit, "R_OK|");
    				r=1;
    			}  
    		}else if(!strcmp(argv[i],"-w")){
    			if(!w){
    				sprintf(droit, "%s%s", droit, "W_OK|");
    				w=1;
    			}
    		}else if(!strcmp(argv[i],"-x")){
    			if(!x){
    				sprintf(droit, "%s%s", droit, "X_OK|");
    				x=1;
    			}
    		}else{
    			exit(EXIT_FAILURE);
    		}
    	}
    	/*Cette boucle permet de changer le dernier OU binaire, en "\0" */
    	if(verbose){
    		droit[((argc-3)*4*(sizeof(char)))]='\0';  
    	} else {
    		droit[((argc-2)*4*(sizeof(char)))]='\0';
    	}
     
    	status=access(argv[argc-1], (int)droit);
    	/*Cette boucle gere les erreurs*/
    	if ((status)&&(verbose)) {
     
    		if(errno==EACCES){
    			printf("%s \n","erreur 4 : Une des composantes du nom du fichier est trop longue");
    		} else if(errno==ELOOP){
    			printf("%s \n","erreur 6 : Le nom du fichier comporte trop de liens symboliques");
    		}else if(errno==ENAMETOOLONG){
    			printf("%s \n","erreur 5 : Le nom du fichier est trop long");
    		}else if(errno==ENOENT){
    			printf("%s \n","erreur 2 : Le fichier n'existe pas");
    		}else if (errno==ENOTDIR){
    			printf("%s \n","erreur 3 : Une des composantes du nom de fichier n'est pas un repertoire");
    		}else if(errno==EROFS){
    			printf("%s \n","erreur 1 : Le droit d'accès demandé au fichier n'est pas positionne");
    		}else{
    			printf("%s \n","erreur 7 : Autre"); /*Les cas ou access PEUT echouer */	
    		} 
    	}
     
    	return status;	
    }
    Bon alors, pour compiler, ça compile. Mais ça me renvoie donne tout le temps "l'erreur 7"... Et je ne comprends pas pourquoi. N'étant pas familier de la commande access et des constantes POSIX, j'avoue que je ne suis pas à l'aise.

    Merci de votre aide en tout cas!
    Veuillez agréer, des bisous.

    PS : La dernière partie de mon code, sert à comparer la valeur de errno avec les constantes d'erreurs définies par la norme POSIX... Enfin si j'ai bien compris...

  2. #2
    Membre éclairé
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Points : 807
    Points
    807
    Par défaut
    D'après le man, access peut positionner errno avec d'autres valeurs. Je te conseillerais de tester einval, parce que ta manière d'envoyer l'argument mode me semble suspecte...
    Sinon, tu peux toujours utiliser la fonction perror qui affiche la description de la valeur actuelle de errno sur stderr.
    Récursivité en C : épidémie ou hérésie ?

    "Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 119
    Points : 39
    Points
    39
    Par défaut
    Bah mon prof nous avait dit de passer les arguments de access comme ça...
    Les constantes W_OK etc, séparées par un OU binaire...

    Je vais déjà changé ce code dégueulasse avec un switch sur errno... Je sais pas bien pourquoi j'ai fait ça comme ça.

  4. #4
    Membre éclairé
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Points : 807
    Points
    807
    Par défaut
    C'est possible, mais avant les conclusions on constate. Je n'ai pas d'ordis à disposition, je ne peux donc pas tester si c'est bon de ce côté. Au risque de me répéter, donne-nous le résultat d'un perror après l'appel de access.
    Une fois qu'on aura déterminé la réelle erreur, on pourra essayer de la résoudre.
    Récursivité en C : épidémie ou hérésie ?

    "Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 119
    Points : 39
    Points
    39
    Par défaut
    Je fais ça rapidement!
    Je connaissais pas perror()...

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 119
    Points : 39
    Points
    39
    Par défaut
    ... Bon je crois que tu as tout bon.
    J'obtiens :
    $ ./maccess -r -x -v main.c
    acess : invalid argument
    erreur 7 : Autre

    ... Mais alors que passer en paramètre de access?...

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 119
    Points : 39
    Points
    39
    Par défaut
    Yeah! J'ai fait juste une petite fonction pour trouver les valeurs des constantes...
    J'ai donc :
    X_OK =1
    W_OK =2
    R_OK =4
    J'y retourne proprement!

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 119
    Points : 39
    Points
    39
    Par défaut
    J'obtiens le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    #include <stdlib.h>
    #include <stdio.h>
    #include <limits.h>
    #include <unistd.h>
    #include <string.h>
    #include <errno.h>
     
    int main(int argc, char* argv[])
    {
    	int droit=0; /*Permet de stocker les "mode" de la commande access*/
    	int i, status;
    	int verbose=0, r=0, x=0, w=0;
     
     
    	/*Cette boucle for permet de récupérer les arguments
    	excepte le dernier, puisque dans une commande correctement 
    	ecrite, celui-ci est le nom du fichier*/
    	for(i=2; i<(argc-1); i++){
    		if(!strcmp(argv[i],"-v")){
    			verbose=1;
    		}else if(!strcmp(argv[i],"-r")){
    			if(!r){
    				droit= droit | 4; /*car R_OK=3*/
    				r=1;
    			}  
    		}else if(!strcmp(argv[i],"-w")){
    			if(!w){
    				droit= droit | 2; /*car W_OK=2*/
    				w=1;
    			}
    		}else if(!strcmp(argv[i],"-x")){
    			if(!x){
    				droit= droit | 1; /*car X_OK=3*/
    				x=1;
    			}
    		}else{
    			exit(EXIT_FAILURE);
    		}
    	}
     
     
    	status=access(argv[argc-1], droit);
    	perror("access");
    	/*Cette boucle gere les erreurs*/
    	if ((status)&&(verbose)) {
     
    		switch(errno)
    		{
    		case EACCES:
    			printf("erreur 4 : Une des composantes du nom du fichier est trop longue \n");		
    		  break;
    		case ELOOP:
    			printf("erreur 6 : Le nom du fichier comporte trop de liens symboliques \n");
    		  break;
    		case ENAMETOOLONG:
    			printf("erreur 5 : Le nom du fichier est trop long \n");
    		  break;
    		case ENOENT:
    			printf("erreur 2 : Le fichier n'existe pas \n");
    		  break;
    		case ENOTDIR:
    			printf("erreur 3 : Une des composantes du nom de fichier n'est pas un repertoire \n");		
    		  break;
    		case EROFS:
    			printf("erreur 1 : Le droit d'accès demandé au fichier n'est pas positionne \n");
    		  break;
    		default:
    			printf("erreur 7 : Autre");
    		}
    	}
     
    	return status;	
    }
    Alors pour une commande qui fonctionne, j'obtiens :
    ./macces -v -r main.c
    access : Success
    Sinon, pour un fichier qui n'existe pas par exemple :
    ./macces -v -x tagagagaga.txt
    access : No such file or directory

    ... Alors que je m'attendais à voir sortir l'erreur : ENOENT...

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 119
    Points : 39
    Points
    39
    Par défaut
    Apparemment, l'erreur vient du fait que, même en passant "-v" dans les options, ma variable verbose reste à 0....
    Mais alors pourquoi... Ca me dépasse.

    ... D'autant que si la variable reste à 0, c'est que "-v" n'a pas été reconnu, donc on est allé jusqu'au "else" qui force à exit(EXIT_FAILURE)... Or ce n'est même pas le cas.


    ===> Resolu grâce au chat. Encore une erreur idiote qu'on oublie de vérifier.
    L'indice de recherche des arguments commence à 2. Et donc, il ne teste pas la première option... Qui dans tous mes essais, était "-v"....

    Merci!

  10. #10
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    le i commence à 2, ce qui va donc prendre le 3ème argument comme premier élément.. hors les 2 tests ont le -v en premier..

    si tu places le -v comme dernier argument, est-ce qu'il n'est pas pris en compte ??
    Si ton problème a une solution, rien ne sert de t'inquiéter..
    Si il n'en a pas, t'inquiéter ne sert à rien


  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 119
    Points : 39
    Points
    39
    Par défaut
    Oui roooh, bon ça va hein!

  12. #12
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Points : 191
    Points
    191
    Par défaut
    Bonjour,

    J'ai 2 choses à dire sur ton code.

    La première est un conseil :

    la deuxième :
    Si tu places le perror("access") avant le if, que tu lances la commande en mode verbose ou non, tu auras un message d'erreur e. Que la commande réussisses ou non. Et si la commande echoue tu en auras même 2! Tu devrais plutôt faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    ...
            status=access(argv[argc-1], droit);
     
    	/*Cette boucle gere les erreurs*/
    	if (verbose) {
     
    		switch(errno)
    		{
    		case EACCES:
    			perror("erreur 4 : ");		
    		  break;
    		case ELOOP:
    			perror("erreur 6 : ");
    		  break;
    		case ENAMETOOLONG:
    			perror("erreur 5 : ") ;
    		  break;
    		case ENOENT:
    			perror("erreur 2 : ");
    		  break;
    		case ENOTDIR:
    			perror("erreur 3 : ");		
    		  break;
    		case EROFS:
    			perror("erreur 1 : ");
    		  break;
                    case 0 :
                            fprintf(stdout, "Success!\n");
                            break;
    		default:
    			perror("erreur 7 : ");
    		}
    	}
    En sachant que le perror affiche sur stderr (si ça a de l'importance).

    cordialement

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 119
    Points : 39
    Points
    39
    Par défaut
    En effet, je connaissais pas "getopt()" ça va me rendre de précieux services je sens.

    Pour ce qui est de la fin, oui je dois enlever mon "perror()" qui me servait juste à vérifier la valeur de mon errno pendant mes tests...
    Enfin je suis obligé d'utiliser les 2 conditions pour ma dernière boucle if...
    Car dans si je ne mets comme condition que "verbose==TRUE", si l'utilisateur fait un appel renvoyant une erreur, celle-ci est stockée dans "errno". Si ensuite il fait un 2e appel, qui cette fois réussi, et qu'il a mis l'option "-v", comme errno n'est pas vidé en cas d'échec, j'aurais encore un message d'erreur.

  14. #14
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Points : 191
    Points
    191
    Par défaut
    Citation Envoyé par Alba.1337 Voir le message
    Enfin je suis obligé d'utiliser les 2 conditions pour ma dernière boucle if...
    Car dans si je ne mets comme condition que "verbose==TRUE", si l'utilisateur fait un appel renvoyant une erreur, celle-ci est stockée dans "errno". Si ensuite il fait un 2e appel, qui cette fois réussi, et qu'il a mis l'option "-v", comme errno n'est pas vidé en cas d'échec, j'aurais encore un message d'erreur.
    Si j'ai bien compris ce que tu veux dire, rassures-toi, le errno n'est pas une variable du système, mais de la libc, donc elle ne traverse pas les programmes (sinon imagines qu'un pote en ssh lances un programme qui modifie le errno en même temps que toi ^^). Lorsque tu lances ton programme une nouvelle fois, tu as un errno tout neuf

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 119
    Points : 39
    Points
    39
    Par défaut
    Ah ok...
    Bon bah j'aurais pas posté pour rien, j'apprends plein de truc
    Merci!

  16. #16
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Points : 191
    Points
    191
    Par défaut
    De rien! ^^
    Oublies pas de passer la discussion en résolu.

    PS : Tu peux aussi simplifier ton code avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
            status=access(argv[argc-1], droit);
     
    	if (verbose) 
    	   fprintf(stderr,          /* ou stdout, selon où tu souhaites l'afficher */
                       "%d : %s", errno, strerror(errno) );
    si les numéros d'erreurs correspondent au numéro errno comme je le soupçonne .

    A++

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 119
    Points : 39
    Points
    39
    Par défaut
    Non, ça je peux pas, le prof voulait ces messages d'erreurs là justement. Je me serais pas fait chi** sinon

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 12
    Points : 9
    Points
    9
    Par défaut errno ?
    Bonjour à tous,

    Alba.1337 je vois que tu es à Lille1 en L3. Sa tombe bien, moi aussi. J'ai donc le même exercice à faire.
    J'ai donc à peu prés fait comme toi cependant je bloque à un endroit et ce que tu as mis dans ton code est faux à ce fameux endroit.
    L'erreur 4 doit ressortir "Une des composantes du nom du fichier est trop longue" nous sommes d'accord mais tu utilise EACCESS qui, si j'en crois la page man de errno, nous indique juste ceci : "Permission refusée".
    Ce n'est pas la seule erreur que tu as fait, je pense, dans l'utilisation de ces codes d'erreurs si sa t’intéresse je pourrai t'en parler mais ce n'est pas pour sa que je suis ici.

    L'erreur 4 doit sortir quand une des composante du nom d'un fichier est trop grande, c'est à dire qu'elle dépasse 255 caractères pour un système ayant NAME_MAX = 255.
    Donc si je schématise cela veut dire, si je comprends bien, que nous avons ceci par exemple :
    /home/composante/fichier

    où "composante" (ou "fichier") est en faite un répertoire dont le nom est de taille > 255 caractères.
    Je n'arrive pas à trouver dans la page man de errno le code d'erreur qui nous signal cela.

    Sachant que l'erreur 5 sort quand "Le nom du fichier est trop long" j'ai donc utilisé la macro ENAMETOOLONG dans mon switch(errno).
    (Je signal avant de continuer que mon système a PATH_MAX = 4096 et NAME_MAX = 255)
    J'arrive donc faire dépassé les 4096 caractères pour un chemin de fichier ce qui me provoque bien l'erreur 5 mais cette erreur est aussi sortie pour un chemin de ce type :

    toto/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/tata

    qui fait 316 caractères.

    Donc soit il existe un code errno que je n'arrive pas à trouver qui signal cette erreur (qui devrait être une erreur 4 et nom la 5) soit je dois utilisé ENAMETOOLONG pour les deux cas et ensuite dans mon "case ENAMETOOLONG" de mon switch(errno) je dois me débrouiller pour différencier ces deux cas.

    Qu'en pensez vous ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [vb6 et access] problème de modification de contenu de champ
    Par dj_tess dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 22/12/2005, 19h26
  2. [MS Access] Problème de jointure
    Par Erakis dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/02/2005, 21h15
  3. Réponses: 3
    Dernier message: 11/10/2004, 17h26
  4. [Access]Problème de sript avec LIKE
    Par Oberown dans le forum ASP
    Réponses: 3
    Dernier message: 06/10/2004, 17h55
  5. [MFC] problème d'éxécution
    Par ben_iap dans le forum MFC
    Réponses: 2
    Dernier message: 15/03/2004, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo