6 messages in org.openoffice.fr.progRe: [prog] Copier une table d'une sou...
FromSent OnAttachments
JovialJan 23, 2008 4:41 am 
JulienJan 23, 2008 4:59 am 
JulienJan 23, 2008 5:31 am 
Manuel NAUDINJan 23, 2008 5:37 am 
Sergio CoratoJan 23, 2008 2:24 pm 
oo...@volcar.orgJan 23, 2008 11:17 pm 
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:Re: [prog] Copier une table d'une source à une autreActions...
From:Sergio Corato (serg@wifi.e4a.it)
Date:Jan 23, 2008 2:24:53 pm
List:org.openoffice.fr.prog

Manuel NAUDIN ha scritto:

Le 23/01/08, Julien<j.co@laposte.net> a écrit :

Bonjour, dans mon livre sur sql, ils indiquent que si la base accepte les requêtes imbriquées, on peut faire un truc du genre : INSERT INTO "table_destination" SELECT * FROM "table_source" Perso je n'ai pas testé mais je vais essayer, ensuite si ça marche, ça veut dire que tu peux le faire par macro, il faudra peut-être rélger le problème d'éventuels doublons quand même. D'ailleurs je viens de tester, en SQL direct, ça marche, sil la table existante et la nouvelle table ont bien les mêmes champs.

Coucou, mais ça ne marche que si les deux tables sont dans la même base, non ? Je crois que Jovial veut faire ça d'une base à une autre. Je pense qu'il faut ouvrir deux connexions : une vers la base source, une vers la base destination. Exécuter la requête sur la base source, récupérer le ResultSet, et avec une boucle insérer ligne à ligne dans le base destination en parcourant le ResultSet.

Quelque chose comme ce-ci, peut-etre? (je ne l'ai pas essaié)

rem ---------------------------------------------------------------------- Context = createUnoService("com.sun.star.sdb.DatabaseContext") Db = Context.getByName("Database") Conn = Db.getConnection("user","password") Stat = Conn.CreateStatement() Db1 = Context.getByName("Database1") Conn1 = Db1.getConnection("user","password") Stat1 = Conn1.CreateStatement() rem ----------------------------------------------------------------------

Result = Stat.executeQuery ("SELECT * FROM Database.tb1")

If not isNull(Result) then While Result.next Result1 = Stat1.executeQuery ("SELECT * FROM Database1.tb1 WHERE tb1.c1 = ' "+ Result.getString(1) + " ' ") if not isNull(Result1) then Stat1.executeUpdate ("UPDATE Database.tb1 SET tb1.c1=' " +Result.getString(1)+" ' tb1.c2 =' "+Result.getString(2)+" ' ")

Else Stat1.executeUpdate ("INSERT INTO Database.tb1( c1, c2) VALUES ('"+ Result.getString(1)+" ',' "+Result.getString(2)+" ') ") EndIf Wend EndIf

conn.close()

end sub