UTILISATION D'UN FICHIER À ACCÈS DIRECT, COMME BASE DE DONNÉES.
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 2006
-
28 janv. 2006 à 18:15
hanaami
Messages postés3Date d'inscriptionmardi 20 janvier 2009StatutMembreDerniè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.
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
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és1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 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.
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és10Date d'inscriptionlundi 27 décembre 2004StatutMembreDernière intervention 8 mai 2008 29 janv. 2006 à 23:09
super mais mieux vaut utiliser app.path
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 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!
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és1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 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és1Date d'inscriptiondimanche 29 janvier 2006StatutMembreDernière intervention29 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és1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 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
3 mars 2013 à 22:34
31 janv. 2006 à 18:06
'-----------------------------------------------------------
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).
31 janv. 2006 à 16:15
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
30 janv. 2006 à 11:01
29 janv. 2006 à 23:09
29 janv. 2006 à 20:17
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!
29 janv. 2006 à 18:06
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.
29 janv. 2006 à 11:22
Malheureusement, je ne connais pas visual basic 2005, j'espère que quelqu'un te donnera la solution.
jpleroisse
29 janv. 2006 à 09:03
QQ peut-il le faire et mettre le projet upgradé en ligne.
Merci
Cyrille (J'y arriverais un jour.....)
28 janv. 2006 à 18:15
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