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

Messages postés
6
Date d'inscription
jeudi 14 mars 2013
Statut
Membre
Dernière intervention
23 octobre 2013
- - Dernière réponse : 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
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
381
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
24 octobre 2013
2
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 130 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Mike Gagnon
Messages postés
381
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
24 octobre 2013
2
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 130 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Mike Gagnon
Messages postés
381
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
24 octobre 2013
2
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
Messages postés
6
Date d'inscription
jeudi 14 mars 2013
Statut
Membre
Dernière intervention
23 octobre 2013
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
Messages postés
6
Date d'inscription
jeudi 14 mars 2013
Statut
Membre
Dernière intervention
23 octobre 2013
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
Messages postés
6
Date d'inscription
jeudi 14 mars 2013
Statut
Membre
Dernière intervention
23 octobre 2013
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