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

skypouap 6 Messages postés jeudi 14 mars 2013Date d'inscription 23 octobre 2013 Dernière intervention - 16 juil. 2013 à 19:37 - Dernière réponse : skypouap 6 Messages postés jeudi 14 mars 2013Date d'inscription 23 octobre 2013 Dernière intervention
- 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 381 Messages postés vendredi 15 octobre 2004Date d'inscription 24 octobre 2013 Dernière intervention - 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é 95 internautes ce mois-ci

Commenter la réponse de Mike Gagnon
Meilleure réponse
Mike Gagnon 381 Messages postés vendredi 15 octobre 2004Date d'inscription 24 octobre 2013 Dernière intervention - 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é 95 internautes ce mois-ci

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