UTILISATION D'UN FICHIER À ACCÈS DIRECT, COMME BASE DE DONNÉES.

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 - 28 janv. 2006 à 18:15
hanaami Messages postés 3 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 3 mars 2013 - 3 mars 2013 à 22:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35791-utilisation-d-un-fichier-a-acces-direct-comme-base-de-donnees

hanaami Messages postés 3 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 3 mars 2013
3 mars 2013 à 22:34
s'il vous plait cette application ne fonctione pas pour moi je ne sais pas prq quelq'un peut me servir
Utilisateur anonyme
31 janv. 2006 à 18:06
en faisant comme ça tu devrais pas avoir de problème.
'-----------------------------------------------------------


Dim sFile As String
Dim lFile As Long

sFile = App.Path & "" & "Adresse.adr"
lFile = FreeFile
Open sFile For Random As #lFile Len = Len(Adr)

'---------------------------------------------------
Concernant le FreeFile je conseil également de le faire juste avant l'ouverture du fichier, car tant que le fichier n'est pas ouvert FreeFile renvoie la meme valeur.
Pas genant si on utilise q'un fichier mais avec plusieurs fichiers ouverts simultanément, problème !!!
Le code suivant va générer une erreur sur le 2eme fichier car lFile1=lFile2

Dim sFile1 As String, sFile2 As String
Dim lFile1 As Long, lFile2 As Long

sFile1 = App.Path & "" & "Adresse.adr"
sFile2 = App.Path & "" & "Sauvegarde.adr"
lFile1 = FreeFile
lFile2 = FreeFile

Open sFile1 For Random As #lFile1 Len = Len(Adr)
Open sFile2 For Random As #lFile2 Len = Len(Adr)

Il vaut mieux écrire
------------------------------------------------------
Dim sFile1 As String, sFile2 As String
Dim lFile1 As Long, lFile2 As Long


sFile1 = App.Path & "" & "Adresse.adr"
sFile2 = App.Path & "" & "Sauvegarde.adr"

lFile1 = FreeFile
Open sFile1 For Random As #lFile1 Len = Len(Adr)
lFile2 = FreeFile
Open sFile2 For Random As #lFile2 Len = Len(Adr)

-------------------------------------------------------------

Pour ce qui est de la suppression c'est d'un interet très important car il faut gérer les trous, prévoir le compactage, etc... et c'est pas évident du tout. Ceci dit tu as raison, si ca n'interresse personne, pas la peine, par contre tu fais erreur, les nons débutants n'ont pas la science infuse, et les outils sont telement vaste aujourd'hui que meme des gens expérimentés peuvent y voir un interret (enfin du moins je le pense, et d'ailleurs je connais des pros qui n'on jamais écrit ce type de code).
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
31 janv. 2006 à 16:15
Bonjour,
Merci de ces commentaires, les conseils sont toujours bon.Ceci dit, pour ce qui est de coder en dur le chemin d'accès au fichier, je n'ai pas pu faire autrement, avec App.Path, j'ai un message d'erreur qui me désigne le mot Path et qui dit "Référence à une constante non autorisée".
Je suppose que je l'utilise mal.Pour ce qui est de la suppression, je verrai si celà vaut le coup de modifier si celà n'interesse aucun débutant, car pour les autres ce code ne les intéressent certainement plus depuis longtemp.Pour ce qui est de déclarer en Integer plutôt qu'en Long, à mon avis pour servir de carnet d'adresses perso,c'était largement suffisant.

jpleroisse
Utilisateur anonyme
30 janv. 2006 à 11:01
Tu assurement raison ScSami concernant les canaux, je n'ai jamais réellement approfondie la question ce que de ce pas je vais tester, de toute facon mieux vaut jouer le sécurité en utilisant FreeFile.
jeraos Messages postés 10 Date d'inscription lundi 27 décembre 2004 Statut Membre Dernière intervention 8 mai 2008
29 janv. 2006 à 23:09
super mais mieux vaut utiliser app.path
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
29 janv. 2006 à 20:17
Je suis l'avi de JJDai sauf pour l'explication des canaux car, si je ne m'abuse, il ne peut y avoir de conflits entre plusieurs canaux qu'au sein d'une seule instance de ton programme lors de l'exécution. Autrement dit, y'a pas vraiment de chance que d'autres applis interfèrent. En revanche, en interne, il est très clairement indiqué d'utiliser FreeFile! C'est une habitude à prendre (dur pour les oldschooler ;-). Mais demeur la polémique sur le typage de la variable car les canaux, si je dis pas de conneries, peuvent aller de 1 à 512 ! Enfin, de nos jour, quelle différence entre un petit Byte et un petit Integer !

Sinon, c'est une bonne idée même si je doute que les questions des newbies - qui veulent rien lire - disparaissent du forum ;-) D'ailleurs, je pense que même un tuto est peinne perdue! Mais je suis peut-être un peu pessimiste!
Utilisateur anonyme
29 janv. 2006 à 18:06
Attention au chemin en dur dans le code, mieux vaut utiliser app.path avec eventuellement un sous réperoire.
Attention a ne jamis utiliser un numer de fichier en dir comme #1, il faut utiliser la fonction FreeFile pour recuperer le premier numéro libre et dans ce cas il faut déclarer la variable au niveau du module, d'autre appli font la meê chaose, il y a un fort risque de colision, de pointer sur le meme fichier.
Il n'est pas conseillé d'utilisé les accents dans les noms de variable de fonction, ... c'est source d'erreur dificile à détecter.
MaxEnreg est typé en integer, il serait préférable de le typer en long, sinon ca limite a 32765 le nombre d'enregistrements (je sais c'est déja pas mal, mais pour certaines utilisations ca peut être un peu court).
Domage ca ne gere pas la suppression.
C'est bien commenter
Pour ce qui est de la compatilité avec VB5 ca devrait pas pauser de problème, il n'y a rien a priori de spécifique à vb6.
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
29 janv. 2006 à 11:22
Bonjour,
Malheureusement, je ne connais pas visual basic 2005, j'espère que quelqu'un te donnera la solution.
jpleroisse
cytut Messages postés 1 Date d'inscription dimanche 29 janvier 2006 Statut Membre Dernière intervention 29 janvier 2006
29 janv. 2006 à 09:03
C'est exactement ce que je cherche mais la conversion automatique vers Visual basic 2005 express génère des erreurs, je suis incapable de les corriger (très débutant).
QQ peut-il le faire et mettre le projet upgradé en ligne.
Merci
Cyrille (J'y arriverais un jour.....)
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
28 janv. 2006 à 18:15
Bonjour,
Un oubli de ma part, j'ai joint au fichier zip, le fichier Adresse.adr, créé par l'application, celui-ci n'est pas nécessaire puisqu'un fichier sera créé.
Et également que cette source est destinnée aux débutants, je pense l'avoir assez bien commentée.
jpleroisse