Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Différents formats de dbf [ Archives / Divers ] (pledoux)

mardi 9 novembre 2004 à 13:47:31 | Différents formats de dbf

pledoux

Bonjour,

J'ai une table (dont je ne maitrise pas le format) dans laquelle je dois mettre à jour des champs. Sous VB ma propiété CONNECT vaut "FoxPro 3.0;". J'arrive bien à lire les enregistrements mais lorsque je veux mettre à jour avec la fonction UPDATE, j'ai un message d'erreur de lecture seule alors que le READONLY vaut FALSE.

Lorsqu'avec VFP je copie ma table en TYPE FOXPLUS, je passe alors ma propriété CONNECT a "dBASE 5.0;" et là aucun problème, je peux faire ce que je veux sur ma table.

Mon problème est de pouvoir travailler avec la table d'origine sans changer de format avec VFP.

Merci pour votre aide

A+

mardi 9 novembre 2004 à 18:39:31 | Re : Différents formats de dbf

ThierryPerretier

Bonjour,
Voici un exemple de code VB utilisant ADO et le driver OLEDB de VFP.
Le driver VFPOLEDB.DLL est téléchargeable sur le site www Microsoft.



dim oConn as new adodb.connection
dim oRs as new adodb.recordset

oConn.Open "Provider=vfpoledb;Data Source=d:\data\"

oRs.CursorLocation = adUseClient

oRs.Open "select * from table1 ", _
oConn, adOpenKeyset, adLockOptimistic

oRs("valeur") = oRs("valeur") + 1
oRs.update



mercredi 10 novembre 2004 à 12:34:21 | Re : Différents formats de dbf

pledoux

Merci pour ton code. J'ai installé le VFPOLEDB, j'accède bien à la table mais j'ai ce message d'erreur sur la ligne oRs.update

Erreur d'exécution '-2147217887 (80040e21)':

Une opération en plusieurs étapes a généré des erreurs. Vérifiez chaque valeur d'état.

Je ne vois pas où est le problème.

mercredi 10 novembre 2004 à 12:51:06 | Re : Différents formats de dbf

ThierryPerretier

As tu utilisé Addnew() ?

Si oui, il faut renseigner tous les champs dont le DBF n'acceptera pas la valeur NULL.

mercredi 10 novembre 2004 à 13:08:55 | Re : Différents formats de dbf

ThierryPerretier

Tu peux aussi ajouter après l'ouverture de la connexion :

oConn.Execute "SET NULL OFF"

mercredi 10 novembre 2004 à 13:25:27 | Re : Différents formats de dbf

pledoux

Le champ numérique que je veux modifier contient déjà un 0. En revanche certains autres champs sont vides.

J'utilise un oRs.move (valeur) pour me déplacer dans la table et je dois incrémenter de 1 un champ numérique. C'est vrai qu'en regardant le code, je n'ai pas vu de ligne oRs.Edit mais cette fonction n'existe pas.

Alors comment je peux faire pour modifier un enregistrement existant.

mercredi 10 novembre 2004 à 13:57:54 | Re : Différents formats de dbf

ThierryPerretier

Réponse acceptée !
J'ai cru comprendre dans tes précédent messages, que tu voulait mettre à jour des enregistrements grâce au recno().

Utilises donc un curseur coté serveur (donc directement la table DBF)


oRs.CursorLocation = adUseServer

oRs.Open "use table1" ,oConn,adOpenKeyset,adLockOptimistic

oRs.AbsolutePosition=10

oRs.Fields("valeur").Value = oRs.Fields("valeur").Value+1

oRs.update



mercredi 10 novembre 2004 à 14:37:09 | Re : Différents formats de dbf

pledoux

Ok, merci c'est parfait ça marche.
Mais j'aimerais avoir des explications sur ton code. En particulier sur le CursorLocation. Apparemment c'est lui qui me permet d'accèder à ma table.
Enfin, je suppose que pour tous les codes qui sont ici, il faut le VFPOLEDB.

Et pour finir, je suis étonné d'avoir la réponse à mon problème sur le forum de VFP alors que personne n'a su me répondre sur celui de VB.

A+

mercredi 10 novembre 2004 à 15:03:22 | Re : Différents formats de dbf

ThierryPerretier

Curseur coté client : Un recordset est un curseur rempli par ADO. Lors d'une mise à jour, ADO déclenche des instructions UPDATE-SQL.

Donc : select * from table -> toute la table est chargée en mémoire par ADO !
oRs.update -> une instruction UPDATE table SET.. WHERE ...
est déclenchée.

Curseur coté serveur : on travaille directement sur une table/curseur gérée par le moteur de base de données.
C'est comme si tu écrivais en Foxpro :

USE table
GO 10
REPLACE valeur WITH valeur+1

Pour installer VFPOLEDB.DLL sur les postes clients, il suffit de copier la DLL dans SYSTEM32, puis lancer : REGSVR32 VFPOLEDB.DLL.

Concernant ta dernière remarque, pas de commentaires.

Quelques liens :

AtoutFox

Forum microsoft.public.fr.fox



Cette discussion est classé dans : table, format, dbf, différents, formats


Répondre à ce message

Sujets en rapport avec ce message

vfpoledb, dbf dans plusieurs repertoire [ par lijohann ] bonjour,je commence juste a utiliser le vfpoledb et j'ai un probleme. Je voudrais executer un requete faisant appel à des tables.dbf se trouvant dans Vérification des fichiers en format .dbf [ par devham ] salut, je developpe en VB.net , mais cette fois je suis obligé à faire une appliquation en VFP, l'objectif de cette appliquation c'est de verifier la modifier la structure d'un table sous VB [ par pledoux ] Bonjour,J'utilise le VFPOLEDB que m'a indiqué ThierryPerretier et cela fonctionne bien. Je dois maintenant modifier une table. J'ai fait le code suiva combobox dans un formulaire [ par brunaux ] Bonjour à tous !utilisant VFP 6.0 occasionnellement pour faire des écrans de saisie,je voudrais savoir comment l'on fait dans un combobox(donc avec un Remplir une table avec tous les jours de l'année sous forme date [ par atarte ] Bonjour,Voila j'ai besoin de constituer une table contenant tous les jours de l'année dans un champ nommé date. La perspéctive de devoir faire la mani Réparer fichier DBF FoxPro 9 [ par FLYeRNeT ] Bonjour,Je recherche un logiciel GRATUIT (j'en ai trouvé beaucoup mais ils sont tous payants... ) qui permet de réparer un fichier DBF FoxPro corrompu Convertir fichier txt en mdb [ par ducker88 ] Bonjour,J'aimerai savoir comment convertir un fichier texte en fichier dbf dans le but de pouvoir reutiliser cette table dans foxpro.Chaque ligne est Valeur maximum [ par ducker88 ] Bonjour, Est 'il possible de trouver la valeur maximale d'une colonne d'une table ?exemole dans une table j'ai la valeur valeur et je voudrais recuper Accès limité à une table. [ par pledoux ] Bonjour,Je souhaite faire un accès limité à plusieurs table. Je vous explique :J'ai des programmeurs qui utilisent VisualFoxPro pour travailler sur le FoxPro .DBF -> .CDX [ par davidcbr ] Bonjour,Je n ai pas de logiciel FoxPro et je dois modifier un fichier DBF (ajout d enregistrements). J'ai fait cela avec Excel.Le problème c est que j


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,187 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.