Lire-écrire-modifier-supprimer dans fichier fermé sans ADO

erics83

XLDnaute Occasionnel
Bonjour,

Tout d'abord, je tiens à remercier Tatiak de son aide. En effet, Pierre m'a montré que l'on pouvait lire-écrire-modifier-supprimer dans un fichier fermé, sans passer par ADO. Il crée un dossier DBF, injecte un fichier dbf (donc ré-utilisable avec de nombreux applicatifs (dont MSoffice) et ensuite, on peut faire un peu ce que l'on veut à partir de ce fichier.

Pierre m'a très gentiment fourni un exemple de code simplifié, très rapide pour comprenne le fonctionnement et je l'en remercie.

Par contre, mes très faibles connaissances en VBA me bloquent....et j'ai besoin de votre aide.

Le principe recherché :
à l'ouverture du fichier, un USF s'affiche, 4 possibilités :
*Rechercher : j'ai copié/collé le code de Pierre, mais je souhaiterai que le résultat s'affiche dans le USF plutôt que en H:I
*Ajouter : idem, j'ai copié/collé le code, mais je souhaiterais que le USF2 s'affiche et enregistre dans le fichier fermé
*Modifier : là, je n'ai pas trouvé comment faire....j'ai essayé avec Update, mais mon SQL est très limité....
*Supprimer : idem....

C'est un fichier test, très light (encore merci Pierre), une fois que j'aurai compris la logique, je le mettrais en forme, car mon tableau final reprendra environ 50 colonnes...

En vous remerciant par avance pour m'aiguiller, me donner des pistes.....
A+
 

Fichiers joints

tatiak

XLDnaute Barbatruc
Mais si c'est de l'ADO! Crediou meme en liaison tardive ça reste de l'ADO!!!
Sinon pour utiliser ces méthodes un minimum de connaissance en langage Sql est utile ainsi qu'un minimum de bagage en base de données, sans quoi tu n'avancera pas! =>cf. pdf à télécharger sur : http://www.agroparistech.fr/mmip/mc/agro/introsi.html
Exemple la syntaxe d'un update n'est pas identique à celle d'un select => cf. : https://sql.sh/
 
Dernière édition:

erics83

XLDnaute Occasionnel
Merci Pierre,

Merci pour ces liens vers tutos, j'avais fait des recherches, mais noyé par le nombre de sites et surtout sans réponse à mes interrogations....merci pour ces liens, je me plonge dedans et vais essayer de faire évoluer le fichier....


merci de ton aide,
Eric
 

erics83

XLDnaute Occasionnel
Merci Pierre,

J'ai lu avec grande attention les tutos, qui effectivement ont comblé pas mal de "blanc"....je comprends mieux l'importance des clefs. En fait, cela fonctionne comme Access (c'est normal tu me diras...lol).

J'essaye toujours de mettre à jour, j'ai essayé
Code:
Sub modifie_dbf()
    Req = "UPDATE " & "Test.dbf" & " SET " & Dt = 42401 & " WHERE " & Id = 2
    result = Sql.Query(Req)
End Sub
en m'inspirant de la page 39 du tuto, mais le code bloque puisqu'il ne reconnaît pas Dt....

Une petite aide ?
Merci,
 

tatiak

XLDnaute Barbatruc
Tu devrais mieux lire aussi le code des p'tites démo que je t'ai écris. Il y a une procédure Update_DBF toute faite qu'il suffit d'appeler (et non de bidouiller):
VB:
Update_DBF "Test.dbf", "Dt=42401", "Id=2"
Et ici Dt et Id sont des champs de ta table et non des variables du code.
 

erics83

XLDnaute Occasionnel
Merci Pierre,

Oui, j'avais bien vu dans ton code dans le module Sql qu'il y avait un exemple UPDATE, mais effectivement, je n'ai pas fait attention aux "" et aux variables.....d'où mes erreurs...

J'ai un peu de mal, car je ne maitrise pas vraiment les fonctions (ton code y fait beaucoup référence, gain de temps j'imagine....), j'ai essayé de trouver des tutos sur le net, mais une fois de plus, noyé sous la masse des infos, liens, etc... N'aurais tu pas SVP un lien vers un "bon tuto" sur les FUNCTION ?

Je pense avoir compris la logique de ton code : pour trouver les variables, tu fais appel à la fonction, et ensuite tu les injectes dans "Test", et effectivement c'est du ADO (j'ai comparé le "requêteur" avec ce que je connaissais de ADO et...c'est bien du ADO, je me suis fait avoir avec les "outils/références" et maintenant, j'ai compris ce que voulait dire la liaison tardive....;)

Merci pour ton aide,
Eric
 

erics83

XLDnaute Occasionnel
Merci Pierre,

Silkyroad est une source d'inspiration depuis toujours....et là, je n'ai même pas pensé y aller faire un tour....fatigue quand tu nous tiens...lol

Merci pour ton aide,
 

Haut Bas