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!
Cordialement