Ajout d'un champ a une table

Résolu
skypouap Messages postés 6 Date d'inscription jeudi 14 mars 2013 Statut Membre Dernière intervention 23 octobre 2013 - 16 juil. 2013 à 19:37
skypouap Messages postés 6 Date d'inscription jeudi 14 mars 2013 Statut Membre 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

6 réponses

Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
17 juil. 2013 à 18:42
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
3
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
17 juil. 2013 à 19:06
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
3
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
17 juil. 2013 à 11:52
Il faut avoir accès exclusif à la table.

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




Mike Gagnon
1
skypouap Messages postés 6 Date d'inscription jeudi 14 mars 2013 Statut Membre Dernière intervention 23 octobre 2013
17 juil. 2013 à 13:10
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
0

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

Posez votre question
skypouap Messages postés 6 Date d'inscription jeudi 14 mars 2013 Statut Membre Dernière intervention 23 octobre 2013
17 juil. 2013 à 17:53
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....
0
skypouap Messages postés 6 Date d'inscription jeudi 14 mars 2013 Statut Membre Dernière intervention 23 octobre 2013
18 juil. 2013 à 13:52
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...
0
Rejoignez-nous