jee0404
Messages postés131Date d'inscriptionjeudi 21 octobre 2004StatutMembreDernière intervention27 octobre 2009
-
3 févr. 2005 à 19:33
jee0404
Messages postés131Date d'inscriptionjeudi 21 octobre 2004StatutMembreDernière intervention27 octobre 2009
-
8 févr. 2005 à 19:20
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:
L'instruction alter table est en conflit avec la contrainte foreign key
michelatoutfox
Messages postés828Date d'inscriptionmardi 5 octobre 2004StatutMembreDernière intervention 7 mai 20131 8 févr. 2005 à 13:25
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
Mike Gagnon
Messages postés381Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention24 octobre 20132 6 févr. 2005 à 13:33
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
jee0404
Messages postés131Date d'inscriptionjeudi 21 octobre 2004StatutMembreDernière intervention27 octobre 2009 7 févr. 2005 à 15:05
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é.
michelatoutfox
Messages postés828Date d'inscriptionmardi 5 octobre 2004StatutMembreDernière intervention 7 mai 20131 7 févr. 2005 à 18:26
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)?
jee0404
Messages postés131Date d'inscriptionjeudi 21 octobre 2004StatutMembreDernière intervention27 octobre 2009 7 févr. 2005 à 19:58
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 .
jee0404
Messages postés131Date d'inscriptionjeudi 21 octobre 2004StatutMembreDernière intervention27 octobre 2009 8 févr. 2005 à 14:58
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.
michelatoutfox
Messages postés828Date d'inscriptionmardi 5 octobre 2004StatutMembreDernière intervention 7 mai 20131 8 févr. 2005 à 16:53
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.