Ajout d'un champ a une table [Résolu]

skypouap
Messages postés
6
Date d'inscription
jeudi 14 mars 2013
Dernière intervention
23 octobre 2013
- 16 juil. 2013 à 19:37 - Dernière réponse : skypouap
Messages postés
6
Date d'inscription
jeudi 14 mars 2013
Dernière intervention
23 octobre 2013
- 18 juil. 2013 à 13:52
Bonjour,

Je recherche la possibilité d'ajouter des champs dans une table existante
via un script (foxpro) sans modifier les enregistrements.

En vous remerciant par avance pour vos informations.

Cordialement,

skypouap
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Mike Gagnon
Messages postés
381
Date d'inscription
vendredi 15 octobre 2004
Dernière intervention
24 octobre 2013
- 17 juil. 2013 à 18:42
3
Merci
Tu ne peux pas utiliser un chiffre pour le nom d'une table.
Le nom d'une table est de type caractère. Pourquoi particulierement un chiffre?

USE((C:\d\test)+01000024)
de toute façon il manque la barre oblique
USE((C:\d\test\)+'01000024')


Mike Gagnon

Merci Mike Gagnon 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de Mike Gagnon
Meilleure réponse
Mike Gagnon
Messages postés
381
Date d'inscription
vendredi 15 octobre 2004
Dernière intervention
24 octobre 2013
- 17 juil. 2013 à 19:06
3
Merci
La première ligne, je ne la comprend pas. Customer est-il le nom de la table..


Stictement à titre d'exemple.

Voici un exemple d'une procedure plus generique qui te permet d'utiliser la meme function pour tout tes tables, sans etre oblige d'en ecrire une pour chaque table.



close databases ALL
=AjouterChamp('PERS','C:\CLI\DDO\DBFS\','natcp14','N(4)') &&& Exemple de son utilisation 
Procedure ajouterchamp
   Lparameters tcAlias,tcPath, tcNomDuChamps,tcType
   local lcTable 
   lcTable= tcPath+tcAlias
   use &lcTable exclusive 
   Alter Table &lcTable Add Column &tcNomDuChamps &tcType
   Use In select(lcTable)
Endproc
Mike Gagnon

Merci Mike Gagnon 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de Mike Gagnon
Mike Gagnon
Messages postés
381
Date d'inscription
vendredi 15 octobre 2004
Dernière intervention
24 octobre 2013
- 17 juil. 2013 à 11:52
1
Merci
Il faut avoir accès exclusif à la table.

Use Customer exclusive 
ALTER TABLE Customer ADD COLUMN Fax c(20) NULL




Mike Gagnon
Commenter la réponse de Mike Gagnon
skypouap
Messages postés
6
Date d'inscription
jeudi 14 mars 2013
Dernière intervention
23 octobre 2013
- 17 juil. 2013 à 13:10
0
Merci
Bonjour

Merci M. Mike Gagnon pour ce code.
Au fait je suis un débutant...
La première ligne, je ne la comprend pas. Customer est-il le nom de la table..
En réalité, je veux écrire un traitement (ajout.prg) permettant d'ajouter un champ a une table dont le nom est '00000030'. Comment faire ?

En vous remerciant par avance pour vos informations.

Cordialement,

skypouap
Commenter la réponse de skypouap
skypouap
Messages postés
6
Date d'inscription
jeudi 14 mars 2013
Dernière intervention
23 octobre 2013
- 17 juil. 2013 à 17:53
0
Merci
Bonjour

j'ai essayée ceci mais çà ne marche pas.

Cas 1 :
PARAMETERS 01000024, natcp12, (C:\d\test)

addbs((C:\d\test)+1000024) IN 0 ALIAS 1000024

CLOSE DATABASES all

ALTER TABLE 01000024 ADD COLUMN natcp12 N(4)

USE IN 01000024

*********************************************************
Cas2
PARAMETERS 01000024, natcp12, (C:\d\test)

USE((C:\d\test)+01000024) IN 0 ALIAS 01000024

CLOSE DATABASES all

ALTER TABLE 01000024 ADD COLUMN natcp12 N(4)

USE IN 01000024

**********************************
NB : 01000024 = nom de la table
C:\d\test = le chemin
natcp12 = le nouveau champ
Aidez_mois SVP....
Commenter la réponse de skypouap
skypouap
Messages postés
6
Date d'inscription
jeudi 14 mars 2013
Dernière intervention
23 octobre 2013
- 18 juil. 2013 à 13:52
0
Merci
Bonjour

Merci M. Mike Gagnon, Mon code passe maintenant...

*********************************************************
********** Ajout d'un champ dans une table ***********
*
CLOSE DATABASES ALL && Fermer toutes les tables ouvertes....
SET DEFAULT TO C:\Users\DIRECT6\Desktop\ajout_champ\1 && Fixer le chemin par defaut
*
champ=0
*
SELECT 0
USE 'test'
FOR gnCompteur = 1 TO FCOUNT() && Effectue une boucle sur le nombre de champs
IF UPPER(ALLTRIM(FIELD(gnCompteur))) = UPPER(ALLTRIM('Nom1')) && Le champ existe
*WAIT WINDOW "le champs existe"
=MESSAGEBOX("ce champ existe")
champ=gnCompteur && Stocher la valeur gnCompteur du champ existant...
RETURN
ENDIF
ENDFOR
*
IF UPPER(ALLTRIM(FIELD(champ)))<>UPPER(ALLTRIM('Nom1'))
ADDBS(('C:\Users\DIRECT6\Desktop\ajout_champ\1\')+'test') && Le chemin de la table......
ALTER table 'test' ADD COLUMN 'Nom1' C(25) && Effectuer la modification
ENDIF
*
******************** Fin du traitement ************************************

Appréciez SVP...
Commenter la réponse de skypouap

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.