Bonjour,

Voici un exemple de mise à jour d'une table à partir d'un RowSet : 

sub testRowset()

        dim rowSet as object
        
        rowSet = createUnoService("com.sun.star.sdb.RowSet")
        rowSet.DataSourceName = "fournisseurs_fruits"
        rowSet.commandType = com.sun.star.sdb.CommandType.COMMAND
        rowSet.command = "SELECT * FROM soc_prod"
        rowSet.execute()
        rowSet.moveToInsertRow()
        rowSet.updateString(rowSet.findColumn("id_societe"), 6)
        rowSet.updateString(rowSet.findColumn("id_produit"), 3)
        rowSet.insertRow()
        
end sub

Je me suis inspiré d'un exemple en Java du Developer's Guide trouvé à cette 
adresse : 

http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Database/Example:_Querying_the_Bibliography_Database

Cordialement,

T. Vataire.



----- Mail Original -----
De: "François Breizh" <francois.bre...@orange.fr>
À: prog@fr.openoffice.org
Envoyé: Jeudi 23 Juillet 2009 18:42:47
Objet: [prog] Objet RowSet vs ResultSet

Bonjour,
je m'exerce à la programmation de macros accédant à une base de données 
Base.
Dans le cas actuel j'ai une base qui contient deux tables "Documents" et 
"Auteurs" ; un attribut de la table Documents pointe vers un article de 
la table Auteurs.
pour mettre à jour la tables des documents en ajoutant le nom d'un 
nouvel auteur, j'ai essayé les deux procédures suivantes :

'    Statement.executeUpdate("INSERT INTO ""Auteurs"" (""Nom"") VALUES 
('" & sNomAuteur & "')")
'    ResultSet = Statement.executeQuery("SELECT ""ID_Auteur"" FROM 
""Auteurs"" WHERE ""Nom""='" & sNomAuteur & "'")
'    ResultSet.Next
'    Pointeur = ResultSet.getInt(1)
'    RowSetDocuments.updateInt(4, Pointeur)
'    RowSetDocuments.updateRow()
'..........................................
    RowSetAuteurs.insertRow        ' /Erreur : Function sequence error/
    RowSetAuteurs.moveToInsertRow
    RowSetAuteurs.refreshRow
    RowSetAuteurs.updateString(2,sNomAuteur)
    RowSetAuteurs.updateRow
    RowSetDocuments.updateInt(4, RowSetAuteurs.getInt(1))
    RowSetDocuments.updateRow()

La première méthode, commentée, fonctionne, il est donc possible 
d'ajouter une ligne à la table Auteurs ; la seconde méthode échoue avec 
le message d'erreur "Function sequence error" dès la première ligne.
Je n'arrive pas à trouver de développement sur cette erreur, ni comment 
insérer proprement une nouvelle ligne avec un objet RowSet.
J'utilise OpenOffice 3.0.1 et Ubuntu 9.04

---------------------------------------------------------------------
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org

Répondre à