Page 1 sur 1

[Résolu][Base]Récupérer un nb dans un fichier sur un site

Publié : 20 déc. 2018 19:42
par plonge
Bonjour à tous,
Je bute sur le problème suivant:
j'ai besoin de recupérer sur un site internet le contenu d'un fichier txt comprenant un simple nombre de 4 chiffres pour le placer dans une table.
J'ai commencé deux procédures.
La première appelè - RecupTXT - utilise le dispatcher (que je connaît trés mal), si en local ou en distant, je récupére bien le fichier, je bute sur la rédaction de la récupération du nombre pour le placer dans la table.
La deuxième - importUTF8 - provient de ce fil ici que j'ai adaptée. Si celle-ci fonctionne bien en local pour inscrire le nb dans la table, je n'arrive pas à la faire fonctionner en distant.
Le fichier.txt est enregistré en txt UTF8.
Une idée pour faire marché une ou l'autre procédure!
Le zip avec l'odb et le fichier.txt
Cordialement
plonge

Re: [Base]Récupérer un nb dans un fichier sur un site intern

Publié : 21 déc. 2018 17:02
par jeanmimi
Bonjour,
Je n'ai pas vu la base dans le zip.
Mais, comme le Forum accepte les formats odb et odt, il n'est pas nécessaire de les encapsuler dans un zip.
Est-ce qu'il est possible d'avoir une idée de l'adresse du site à connecter ?

Re: [Base]Récupérer un nb dans un fichier sur un site intern

Publié : 21 déc. 2018 17:09
par plonge
Bonsoir jeanmimi,
Je met la base en pj. Pour le site désolé je ne peux pas donner l'adresse, mais le fichier est placé à la base du site.
Cordialement

Re: [Base]Récupérer un nb dans un fichier sur un site intern

Publié : 21 déc. 2018 23:31
par Jurassic Pork
hello,
avec l'extension EasyDev, c'est facile de récupérer un fichier et son contenu à partir d'une adresse http (et même https) grâce à Requests

Voici un exemple qui va chercher ton fichier fichier.txt que j'ai mis chez cjoint :

Code : Tout sélectionner

Sub GetNumber()
    util = createUnoService("org.universolibre.EasyDev")
    data = createUnoStruct("org.universolibre.EasyDev.Requests")
    data.Method = "get"
    data.Url = "https://www.cjoint.com/doc/18_12/HLvxsdSYwcS_fichier.txt"
    response = util.requests(data)
    MsgBox("le nombre récupéré est : " & response.Text)
End Sub
Ami calmant, J.P

Re: [Base]Récupérer un nb dans un fichier sur un site intern

Publié : 22 déc. 2018 09:57
par Piaf
Bonjour

Code : Tout sélectionner

Option Explicit
Sub RecupTXT
Dim maConnexion as Object, Statement as Object, docWriter As Object, monTexte as Object, monCurseur as Object
Dim adrDocTXT As String, monNombre as Double, strSQL as String
	ThisDatabaseDocument.CurrentController.connect("","")
	maConnexion = ThisDatabasedocument.CurrentController.ActiveConnection
	Statement = maConnexion.createStatement()
	adrDocTXT = ConvertToURL("https://www.cjoint.com/doc/18_12/HLvxsdSYwcS_fichier.txt") ' à adapter
	docWriter = StarDesktop.loadComponentFromURL(adrDocTXT, "_blank", 0, Array())
	monTexte = docWriter.Text
	monCurseur = monTexte.createTextCursor
	monCurseur.gotoEndOfWord(true)
	monNombre = CDbl(monCurseur.String)
	strSQL = "DELETE FROM ""newver"""
	Statement.executeUpdate(strSQL)
	strSQL = "ALTER TABLE ""newver"" ALTER COLUMN ""NDVN"" RESTART WITH 0" 
	Statement.executeUpdate(strSQL)	
	strSQL="INSERT INTO ""newver"" (""NVer"") VALUES(" & MonNombre & ")"
	Statement.executeUpdate(strSQL)
	docWriter.Close(True)
End Sub
Devrait le faire.
A+

Re: [Base]Récupérer un nb dans un fichier sur un site intern

Publié : 22 déc. 2018 16:49
par plonge
Bonsoir,
Jurassic Pork
Merci pour ton code qui fonctionne avec l'extension. La finalité du mien devant servir à différente personnes (que je ne connais pas par avance), je ne peux pas m'assurer que cette extension sera présente sur leurs ordis.
Piaf
Ton code fonctionne bien, seulement je voudrais arriver à ce résultat sans avoir à ouvrir le fichier dans Writer, comme le fait la 2éme procédure de mon fichier Test_site.odb en local. J'ai remplacé pour cela _blank par _hidden à l'ouverture du fichier dans Writer, mais il quand même visible, je ne comprend pas pourquoi! Le "Wiki" ici présice bien "la valeur _hidden qui permet de charger le document correspondant tout en le gardant invisible. "

Re: [Base]Récupérer un nb dans un fichier sur un site intern

Publié : 22 déc. 2018 17:13
par Piaf
Re
Tu devrais revoir les propriétés d'ouverture d'un document, Voir loadComponentFromURL

Code : Tout sélectionner

Option Explicit
Sub RecupTXT
Dim maConnexion as Object, Statement as Object, docWriter As Object, monTexte as Object, monCurseur as Object
Dim adrDocTXT As String, monNombre as Double, strSQL as String
Dim Arg(0) As New com.sun.star.beans.PropertyValue
	Arg(0).Name = "Hidden"
	Arg(0).Value = True
	ThisDatabaseDocument.CurrentController.connect("","")
	maConnexion = ThisDatabasedocument.CurrentController.ActiveConnection
	Statement = maConnexion.createStatement()
	adrDocTXT = ConvertToURL("https://www.cjoint.com/doc/18_12/HLvxsdSYwcS_fichier.txt")
	docWriter = StarDesktop.loadComponentFromURL(adrDocTXT, "_blank", 0, Arg())
	monTexte = docWriter.Text
	monCurseur = monTexte.createTextCursor
	monCurseur.gotoEndOfWord(true)
	monNombre = CDbl(monCurseur.String)
	strSQL = "DELETE FROM ""newver"""
	Statement.executeUpdate(strSQL)
	strSQL = "ALTER TABLE ""newver"" ALTER COLUMN ""NDVN"" RESTART WITH 0" 
	Statement.executeUpdate(strSQL)	
	strSQL="INSERT INTO ""newver"" (""NVer"") VALUES(" & MonNombre & ")"
	Statement.executeUpdate(strSQL)
	docWriter.Close(True)
End Sub
Devrait le faire.
A+

Re: [Base]Récupérer un nb dans un fichier sur un site intern

Publié : 22 déc. 2018 17:17
par Jurassic Pork
hello,
en basic, Charlie Young a écrit ce code pour récupérer un contenu de fichier accessible par http :

Code : Tout sélectionner

Function getContentsOfUrl(Url As String) As String
   Dim oSimple As Object, oTextInput As Object
   Dim SimpleStream As Object
   Dim inString As String   
   oTextInput = createUnoService("com.sun.star.io.TextInputStream")
   oSimple = createUnoService("com.sun.star.ucb.SimpleFileAccess")
   SimpleStream = oSimple.openFileRead(Url)
   oTextInput.setInputStream(SimpleStream) 
   getContentsOfUrl = oTextInput.readString(Array(),False)   
End Function 
exemple d'utilisation :

Code : Tout sélectionner

Sub RecupNombre()
Dim LeNombre
    LeNombre = getContentsOfUrl("http://www.cjoint.com/doc/18_12/HLvxsdSYwcS_fichier.txt")
    MsgBox("le nombre récupéré est : " & LeNombre)
End Sub
Ami calmant, J.P

Re: [Base]Récupérer un nb dans un fichier sur un site intern

Publié : 22 déc. 2018 17:31
par plonge
Re,
J. P. et Piaf
Je viens de tester vos deux solutions et cela marche bien.
Un grand merci à vous deux pour votre aide
Promis Piaf je vais réviser! :D
Cordialement