Problème avec alter table [Résolu]

Signaler
Messages postés
131
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
27 octobre 2009
-
Messages postés
131
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
27 octobre 2009
-
bonjour,

Je travaille avec les tables de foxpro (dbf) et j'ai faite un logiciel qui change
le nom des colonmes manuellement avec la commande suivante :

"COPY FILE (nom) TO (convernom)"
"ALTER TABLE (convernom);
RENAME Column volume to levolume"

et le problème la ligne de commande ne change pas le nom tout de suite et
elle ne génere pas d'erreur. Elle marche pour la première fois quand je fait un
overwrite sur la table et qu'il apparaît un message box quand je oui , la commande
alter table apparaît. Si quelqu'un peu m'aider.
A voir également:

11 réponses

Messages postés
828
Date d'inscription
mardi 5 octobre 2004
Statut
Membre
Dernière intervention
7 mai 2013
1
On pourrait en déduire que c'est un problème de cache disque...

Assure-toi que Norton ne surveille pas tes dossiers de données (sans oublier ceux où se trouvent tes dbc, ni ceux de tes fichiers temporaires VFP)

Ta fonction qui copie, elle se trouve où ? dans un prg, dans un form...?
essaie de mettre le SET AUTOSAVE à ON (attention, comme tous les SET, il ne s'applique qu'à la session de données courante)

éventuellement, il faudra forcer l'écriture sur le disque (c'est sous-jacent à la proposition de Mike) :
COPY FILE (nom) TO (convernom)
USE (CONVERNOM) EXCLUSIVE
FLUSH
ALTER TABLE (convernom);
RENAME Column volume to levolume

Michel
Messages postés
153
Date d'inscription
vendredi 2 mai 2003
Statut
Modérateur
Dernière intervention
2 avril 2010

set safety off ?

[mailto:frederic.steczycki@mvps.org Fred]
membre actif d'AtoutFox
MS MVP VFP
Messages postés
131
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
27 octobre 2009

non désolé , ca ne marche pas plus , on dirait que quand je créé la table le
alter table ne marche pas. Je ne sais pas pourkoi.
Messages postés
153
Date d'inscription
vendredi 2 mai 2003
Statut
Modérateur
Dernière intervention
2 avril 2010

qui a t'il dans nom et convernom ?

[mailto:frederic.steczycki@mvps.org Fred]
membre actif d'AtoutFox
MS MVP VFP
Messages postés
381
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
24 octobre 2013
2
Je crois qu'il s'assurer comme Fred indique que tous les parametres contiennent ce qu'ils sont supposer contenir. Et aussi, pour altérer une table il faut l'ouvrir en mode exclusif, le Copy File n'ouvre pas la table.

lcTabledest = 'c:\test2.dbf'
lcTable = 'c:\test.dbf'
CREATE TABLE c:\test (name c(20))
COPY FILE (lcTable) TO (lcTableDest)
USE (lcTabledest) EXCLUSIVE
ALTER TABLE (lcTabledest) rename COLUMN name to name1

Mike Gagnon
Messages postés
131
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
27 octobre 2009

quand j'utilise le EXCLUSIVE , cela ne marche pas la première foix, et quand
je appele la procedure une deuxième fois et que les tables sont déjà créé cela
marche comme il le faut. cela se peut-il que le "altern table" et dans les variables
"nom" et "convernom" ils contient les noms des base de donné.
Messages postés
828
Date d'inscription
mardi 5 octobre 2004
Statut
Membre
Dernière intervention
7 mai 2013
1
Ah, Jee0404,

il nous manque encore un ou 2 renseignements pour arriver à t'aider !

comment s'appellent ta table d'origine et ta table de destination (les dbf, avec leur fullpath) ?
ta table d'origine est-elle sur un lecteur local ou réseau ?
es-tu certain d'avoir tous les droits en écriture sur ce dossier ?
combien d'enregistrements fait ta table d'origine ?
quelle est sa structure ?
as-tu un antivirus activé (Norton en particulier) ?

Quand tu dis "ça ne marche pas la première fois", qu'est-ce qui ne marche pas?
Et que veut dire "quand les tables sont déjà créées"? ta table1 est bien créée avant que tu n'essaie de la copier...
Et quel est le texte EXACT des messages d'erreur ?

si tu essaies ceci (en supposant que table1.dbf soit le nom de ta table1) :
USE table1 in 0 EXCLUSIVE
SELECT table1
MODIF STRUCT
Est-ce que tu vois apparaitre le générateur de table dans un délai normal (c'est à dire instantanément)?

Michel
Messages postés
131
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
27 octobre 2009

Salut Michel,

C'est un plaisir de te revoir sur ma question.

comment s'appellent ta table d'origine et ta table de destination
(les dbf, avec leur fullpath) ? la table d'origine s'appelle a99999 avec le path
"c:\soumis1" et la table de destination s'appelle va9999 ( les nom change
souvent , elles sont stocké dans des variables , mais elle gardent tout le temps
le même path)

ta table d'origine est-elle sur un lecteur local ou réseau ? local

es-tu certain d'avoir tous les droits en écriture sur ce dossier ?
oui

combien d'enregistrements fait ta table d'origine ?
entre 20 et 100

quelle est sa structure ?
désolé mais je ne peut pas révellé cette information sur internet (mon boss
ne veut pas ). mais c'est des champs bien ordinaires (seulement des lettres)

as-tu un antivirus activé (Norton en particulier) ?
oui norton

Est-ce que tu vois apparaitre le générateur de table dans un délai normal (c'est à dire instantanément)?
oui

Quand je dis sur le forum que ça ne marche pas la première fois , c'est quand
j'appelle la fonction qui fait : copie la base de donné et qui renomme les champs

bon quand je l'appelle première fois , elle créé et copie les base de donnée
mais elle ne renomme pas les champs .

et quand je l'appelle pour une deuxième fois la même fonction , elle écrase les
base de donnée et là elle renomme les champs comme il faut .

Il n'y a pas d'erreur qui est généré !!!

Merci pour ton attention
JP
Messages postés
131
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
27 octobre 2009

Salut ,

Merci j'ai ajouté le FLUSH et mon problème est réglé.Mais je serais curieux comment tu peut savoir quand tu mets le SET AUTOSAVE ON pour qu'il s'applique a toute la session . Moi tout mon code est dans des prg et non dans des forms . Je crée mes
classes manuellement dans les prg.

JP
Messages postés
828
Date d'inscription
mardi 5 octobre 2004
Statut
Membre
Dernière intervention
7 mai 2013
1
Je ne comprend pas ta question:
Mais je serais curieux comment tu peut savoir quand tu mets le SET AUTOSAVE ON pour qu'il s'applique a toute la session

set autosave s'applique à la session de données en cours, comme un set date, ou un set near, ou d'autres encore. Si tu changes de session de données (par exemple en utilisant une session de donnée privée, pour un form), ton set autosave sera comme il était avant ton prg.

Michel
Messages postés
131
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
27 octobre 2009

ha ok , c'est beau j'ai compris pour set autosave.