Gambas France BETA


Pas de compte ? Incription

SQLite et PDF

Ce sujet est résolu.

1
AuteurMessages
valaquarus#1 Posté le 16/11/2021 à 19:55:21
-- Unus Ex Altera --Bonsoir à tous,
une question concernant les bases de données (SQLite3) peut on enregistrer donc créer un champ qui accepterait un fichier PDF. Le but étant de faire appel et lire une fiche technique en PDF quand on est sur un enregistrement quelconque.
Et si oui, par miracle, et bien comment?
Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
spheris#2 Posté le 16/11/2021 à 20:52:38
les bdd sqlite acceptent les données de type BLOB, il n'y a pas de raison pour que tu ne puisses pas stocker un PDF dedans.
comment? comme un simple fichier binaire ( non texte ).
valaquarus#3 Posté le 17/11/2021 à 15:19:13
-- Unus Ex Altera --Merci Spheris,
je m'en va tester la chose.
Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
valaquarus#4 Posté le 25/11/2021 à 14:41:15
-- Unus Ex Altera --Bonjour à tous,
bon j'ai réussi à créer un blob dans ma base SQLite et y mettre un fichier PDF dedans maintenant comment je récupère le PDF et non le contenu en format texte?
Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
spheris#5 Posté le 25/11/2021 à 22:03:31
Valaquarus,
Un fichier PDF n'étant pas un fichier texte brut, utilise les pointeurs pour ouvrir ton fichier et le parcourir.
valaquarus#6 Posté le 26/11/2021 à 14:58:46
-- Unus Ex Altera --Merci Spheris,
je ne connais pas les pointeurs mais je vais chercher dans cette direction.
Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
linuxos#7 Posté le 27/11/2021 à 14:56:25
Un peu de sel, de poivre et la crevette sera... Bonjour valaquarus,

1 - Une autre façon de faire, serait de ne stocker dans SQLite3 le chemin de ton fichier PDF (comme référence) et d'écrire le fichier PDF sur ton disque dur avec le même chemin.
De toute manière, SQLite est local a ta machine, donc que les fichiers PDF (ou bien d'autres) soient situés en local sur ta machine cela parait cohérent.

2 - Sinon, je pense que Spheris veut parler de charger ton fichier 'brut' comme un fichier Binaire dans Gambas et non pas comme un fichier Texte, car cela n'en est pas un, puis d'envoyer tout les données binaires du fichier dans SQLite

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
valaquarus#8 Posté le 27/11/2021 à 16:13:15
-- Unus Ex Altera --Merci Linuxos de ta réponse;
j'avoue que ta première solution me plait plus que la seconde car la base devient lente en lecture avec un seul fichier testé.
C'est donc ce que je voulais faire mais j'ai un souci avec l'IDE qui me renvoie avec le DataControl dédié au blob une routine pour charger dans le bob le fichier souhaité.
Pour l'instant je n'ai pas réussi à le contourner mais je vais trouver.

Pour le deuxième point effectivement je n'arrive pas à charger le fichier binaire car je suis passé par un texbox intermédiaire mais je vais corriger cela .

Dans tous les cas quelque soit la solution que je retiendrai je veux que toutes fonctionnent ne serait que pour mon apprentissage.
Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
valaquarus#9 Posté le 27/11/2021 à 22:57:31
-- Unus Ex Altera --Bonsoir à tous,
comme je le disais auparavant je préfère la solution de passer juste l'adresse du fichier pdf que le contenu qui alourdi la base qui est déjà bien conséquente.
Donc j'ai ripé le fameux datacontrol qui me renvoyais vers le champ blob en copiant le fichier brut :
1
2
3
4
5
6
7
8
9
10
11
DIM hResult AS Result
Dialog.Filter = ["*.pdf", ("Fichier pdf"), "*.PDF", ("Fichier PDF"), "*.*", ("Tous les Fichiers")]
Dialog.Title = (" Choisissez la Fiche Technique : ")
IF Dialog.OpenFile(FALSE) THEN RETURN
TBnFichTech.Text = Dialog.Path
db.Current.Begin
hResult = db.Current.Edit("maTable")
hResult.MoveTo(DataSource1.Index)
hResult!FichTech = TBnFichTech.Text
hResult.Update
db.Current.Commit
Après il ne reste plus qu'à ouvrir et lire le fichier par un simple :
1
Desktop.Open(TBFichTech.Text)
pour les fainéants comme moi.

Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
valaquarus#10 Posté le 28/11/2021 à 10:43:10
-- Unus Ex Altera --Bonjour,
maintenant, je vais faire l'autre solution, bien que plus lourde juste pour le fun et mon apprentissage mais ce n'est pas encore gagné.
Un grand merci à Linuxos et Sphéris pour m'avoir donné des pistes de travail.
Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
1