Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.
Modérateur :Vilains modOOs
Règles du forum Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
La modération vous a écrit: Pour la bonne tenue de ce forum, veillez à respecter la syntaxe des balises (première lettre en majuscule puis le reste en minuscules, le tout entre crochets). [Base] et non [base]
votre signature a écrit :LibreOffice Version: 5.2.7.2
OS Debian 9
Votre signature indique une version de LibreOffice qui n'est plus maintenue.
Est-ce une une erreur, un oubli, un choix, une obligation ?
Dans ce dernier cas, mentionnez-le dans votre signature par "Obligation de version".
Ici, il faut faciliter la vie des bénévoles.
Pourquoi joindre un fichier compressé et pas directement un ODB ?
Eric_03 a écrit :La clé primaire concerne le champ demande.
Sais-tu à quoi sert une clef primaire au moins ?
L'erreur montre que tu veux insérer une information vide alors que tu interdis cette opération sur le champ.
Le problème vient du fait que la macro n'est pas adaptée à la structure de ta table. Celle-ci impose une valeur pour la champ "Dossier" et pour le champ "Demande" (ce dernier, en 4e position, étant la clé primaire), alors que la macro originale attend un seul champ requis en première position (position naturelle d'une clé primaire).
J'ai adapté le code pour qu'il fonctionne avec ta source csv.
Cordialement.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOOo 4.1.7 sur Win10 AOOo 4.1.x sur Linux Mint LibreOffice 5.x/6.x sur Linux Mint
-- ▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
La clé primaire se trouve en quatrième position car le fichier que je récupère en pdf se trouve sur un gros système. Ce fichier pdf est enregistré en txt puis mise en forme sous calc pour être enregistrer en csv et ensuite intégré dans Base.
J'analyse tes modifications et mettrai le sujet résolu ensuite
votre signature a écrit :LibreOffice Version: 5.2.7.2
OS Debian 9
Votre signature indique une version de LibreOffice qui n'est plus maintenue.
Est-ce une une erreur, un oubli, un choix, une obligation ?
Dans ce dernier cas, mentionnez-le dans votre signature par "Obligation de version".
Il s'agit bien de ma version. Je n'ai pas de proposition d'upgrade automatique pour LibreOffice pour Debian 9.
Eric
La modération vous a écrit: Merci de ne pas poster plusieurs messages à la suite, si vous devez ajouter un complément d'information, le bouton "Editer" à la droite du message permet d'y remédier.
En attendant une prochaine réponse, vous pouvez participer également en répondant à d'autres questions sur notre forum.
REM ***** BASIC *******
dim lines()
sub ajoutdonnees()
file = getfilepath()
if file = "" then exit sub
sql = buildsql(file)
dbase = thisdatabasedocument
dbase.CurrentController.connect("","")
conn = dbase.CurrentController.ActiveConnection
statement = conn.createStatement()
statement.execute(sql)
msgbox "Terminé"
dbase.FormDocuments.getByName("f_miseajour").close()
dbase.FormDocuments.getByName("f_menu").open()
end sub
function getfilepath
filepicker = createunoservice("com.sun.star.ui.dialogs.FilePicker")
filepicker.appendFilter("Fichiers txt", "*.txt")
filepicker.appendFilter("Tous les fichiers", "*.*")
if filepicker.execute() then
getfilepath = filepicker.Files(0)
else
getfilepath = ""
end if
end function
function buildsql(url)
dim line1 as string
dim line2 as string
ff = freefile
open url for input as ff
while not eof(ff)
line input #ff, line1
l1 = split(line1, "*")
if ubound(l1) = 12 then
line input #ff, line2
l2 = split(line2, "*")
if trim(l1(1)) <> "NUMERO" then
addline(l1, l2)
end if
end if
wend
close #ff
sql = sql + join(lines(), ";")
buildsql = sql
end function
sub addline(line1, line2)
dim a(11)
a(0) = trim(line1(1))
a(1) = trim(line1(2))
a(2) = trim(line2(2))
a(3) = trim(line1(3))
a(4) = trim(line1(4))
a(5) = trim(line1(5))
a(6) = trim(line1(6))
a(7) = trim(line1(7))
a(8) = trim(line1(8))
a(9) = trim(line1(9))
a(10) = trim(line1(10))
a(11) = getdate(trim(line1(11))
u = ubound(lines)+1
redim preserve lines(u)
lines(u) = "INSERT INTO ""t_europa"" VALUES ('" & join(a(), "','") & "')"
end sub
function getdate(str)
if instr(str, "/") = 0 then
getdate = str
else
d = split(str, "/")
getdate = d(2) & "-" & d(1) & "-" & d(0)
end if
end function
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Hubert Lambert le 08 mars 2018 16:23, modifié 1 fois.
AOOo 4.1.7 sur Win10 AOOo 4.1.x sur Linux Mint LibreOffice 5.x/6.x sur Linux Mint
-- ▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
J'ai adapté un peu le code car dans le champ redevable l'apostrophe dans certain nom posé problème pour l'importation (dans le fichier texte joint cela ne se présentait pas)
AOOo 4.1.7 sur Win10 AOOo 4.1.x sur Linux Mint LibreOffice 5.x/6.x sur Linux Mint
-- ▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)