5 messages in org.openoffice.fr.prog[prog] PB mise à jour de base de donn...
FromSent OnAttachments
BOTTIN Laurence - DGMT/SG/AG2Apr 12, 2006 7:51 am 
Laurent GodardApr 12, 2006 8:00 am 
DAVID Jean-Claude - CETE Ouest/DU/AEHApr 12, 2006 8:12 am 
Bernard MarcellyApr 12, 2006 9:01 am 
BOTTIN Laurence - DGMT/SG/AG2Apr 13, 2006 12:01 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:[prog] PB mise à jour de base de donnée BASEActions...
From:BOTTIN Laurence - DGMT/SG/AG2 (laur@equipement.gouv.fr)
Date:Apr 12, 2006 7:51:24 am
List:org.openoffice.fr.prog

Bonjour,

Je n'arrive pas à résoudre un problème dans la mise à jour de ma base de donnée à partir d'un tableau : Les "update" et les "insert into" semblent fonctionner tant que OOo est ouvert. Si j'ouvre la base de donnée après que la macro MajDonnees ait fonctionnée, elle a bien pris les modifications. Si je ferme complètement OOo, alors je retrouve la base de données dans son état initial.

tailleinitabSignataires est une variable globale tabSignataires est initialisé par une boîte de dialogue

Voici le code : '================================================================ Sub ConnecterSource() Dim oDBSource As String, login As String, password As String, dbURL As String Dim oDataSource As Object, oDBContext As Object dim mondocbase as object dbURL=ConvertToUrl("c:\modeles\dgmt\courrier.odb")

If NOT FileExists(dbURL) Then Msgbox "Problème de disponibilité de la base de données..." & chr(13) & "Alerte!!!" End If

REM Use the DatabaseContext to get a reference to the database. oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext") oDataSource = oDBContext.getByName(dbURL) 'Les paramètres de connexion login = "" password = ""

maConnexion = oDataSource.getConnection(login, password) 'xray maconnexion if IsNull(maConnexion) then MsgBox("Connexion impossible", 16) Stop end if End Sub

'================================================================== Sub DeconnecterSource() maConnexion.close maConnexion.dispose End Sub

'===================================================== Sub majDonnees() On Error GoTo Erreurs

dim maRequete As Object, resuQuery As Object dim mesRows as long, monRow as long dim mesColonnes as long, maColonne as long dim nbColonnes as long, nbre dim instrSQL As String, monSignet As Variant dim i as integer dim monType as string

ConnecterSource maRequete = maConnexion.createStatement() maRequete.ResultSetConcurrency=1008 'Mise à jour des signataires

for i = 1 to ubound(tabSignataires(),1) if i <= tailleinitabSignataires then instrSQL="UPDATE " & """signataires""" instrSQL=instrSQL & " SET " instrSQL=instrSQL & """civilite""" & " = '" & tabSignataires (i, 1 ) & "', " instrSQL=instrSQL & """nom""" & " = '" & tabSignataires (i, 2 ) & "', " instrSQL=instrSQL & """prenom""" & " = '" & tabSignataires (i, 3 ) & "', " instrSQL=instrSQL & """service""" & " = '" & tabSignataires (i, 4 ) & "', " instrSQL=instrSQL & """telephone""" & " = '" & tabSignataires (i, 5 ) & "', " instrSQL=instrSQL & """telecopie""" & " = '" & tabSignataires (i, 6 ) & "', " instrSQL=instrSQL & """email""" & " = '" & tabSignataires (i, 7 ) & "', " instrSQL=instrSQL & """grade""" & " = '" & tabSignataires (i, 8 ) & "', " instrSQL=instrSQL & """fonction""" & " = '" & tabSignataires (i, 9 ) & "' WHERE " & """ID_signataires""" & " =" & tabSignataires (i, 0 ) else if tabSignataires (i, 0 )<>"" or _ tabSignataires (i, 1 )<>"" or _ tabSignataires (i, 2 )<>"" or _ tabSignataires (i, 3 )<>"" or _ tabSignataires (i, 4 )<>"" or _ tabSignataires (i, 5 )<>"" or _ tabSignataires (i, 6 )<>"" or _ tabSignataires (i, 7 )<>"" or _ tabSignataires (i, 8 )<>"" or _ tabSignataires (i, 9 )<>"" then

instrSQL="INSERT INTO " & """signataires""" & "( " instrSQL=instrSQL & """civilite""" & ", " instrSQL=instrSQL & """nom""" & ", " instrSQL=instrSQL & """prenom""" & ", " instrSQL=instrSQL & """service""" & ", " instrSQL=instrSQL & """telephone""" & ", " instrSQL=instrSQL & """telecopie""" & ", " instrSQL=instrSQL & """email""" & ", " instrSQL=instrSQL & """grade""" & ", " instrSQL=instrSQL & """fonction""" & ") " instrSQL=instrSQL & " VALUES ( " instrSQL=instrSQL & " '" & tabSignataires (i, 1 ) & "', " instrSQL=instrSQL & " '" & tabSignataires (i, 2 ) & "', " instrSQL=instrSQL & " '" & tabSignataires (i, 3 ) & "', " instrSQL=instrSQL & " '" & tabSignataires (i, 4 ) & "', " instrSQL=instrSQL & " '" & tabSignataires (i, 5 ) & "', " instrSQL=instrSQL & " '" & tabSignataires (i, 6 ) & "', " instrSQL=instrSQL & " '" & tabSignataires (i, 7 ) & "', " instrSQL=instrSQL & " '" & tabSignataires (i, 8 ) & "', " instrSQL=instrSQL & " '" & tabSignataires (i, 9 ) & "' )" end if

end if print instrSQL nbre = maRequete.executeUpdate(instrSQL) instrSQL="" next

DeconnecterSource Exit Sub Erreurs: erreur_num=err() erreur_txt=error(erreur_num) erreur_ligne = Erl() MsgBox("erreur n° " + erreur_num + " à la ligne " + erreur_ligne + chr(13) + erreur_txt, 1 + 16, "Macro recupcurseur") DeconnecterSource

End Sub

Merci d'avance