begin process at 2012 05 24 09:28:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Foxpro

 > 

Archives

 > 

Divers

 > 

Différents formats de dbf


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Différents formats de dbf

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ée dans : table, format, dbf, différents, formats


Répondre à ce message

Sujets en rapport avec ce message

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 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 Table dbf corrompu [ par abdourasiz ] Bonjour Michel, comme tu l'as souhaité, je te balance mon problème sur le forum. Je demandais comment récupérer les données d'une table dbf endommagé 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 Importer un dump SQL dans VFP9 [ par jardin_japonais ] Bonjour, Je dispose d'une application construite sur VFP9 réalisée par un prestataire. Pour l'utiliser au sein d'une appli web, j'ai exporté les don mise a jour de table [ par jebberi ] slt, j'ai un petit problème pour le mise a jour d'un enregistrement d'un table. premièrement j'ai une grille sur laquelle j'affecte un curseur en reco tranfert de données DBF => SQL 2008 [ par rao64 ] J'utilise VFP 9 sp2 pour faire des travaux ponctuels de contrôle sur des données. Actuellement je cherche à migrer des DBF vers une base SQL server 20 Base corrompu : la base dbc.dbc n'est pas une table valide [ par superjay ] Bonjour, une petit problème avec ma base elle m'affiche : la base dbc.dbc n'est pas une table valide cause : mon serveur nas a crasher je ne suis pa


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales