Quelques petites observations qui peuvent servir.
Je les ai mises dans le code de la base de données.

                                           Cordialement
                                             Jean-Marc


Le vendredi 10 Août 2007 12:08, [EMAIL PROTECTED] a écrit :
> Merci aladdin,
>
>
> J'étudie ton code.
>
>
> Cordialement
>
> Papy
>
> aladdin wrote:
> > Bonjour,
> >
> >> Un essai infructueux de Macro
> >
> > Par exemple si vous une base de donnée qui s'appelle test avec une table
> > DVD et comme champs :
> >
> > id (int)
> > Genre (varchar)
> > TitreFilm (varchar)
> > PrixAchat (int)
> >
> > Vous pouvez parcourir votre table en utilisant cet exemple :
> > Sub maConnexionBase
> > Dim monServiceDB As Object, maSource as Object, maConnection as Object,
> > monStatement As Object, monResultSet as Object
> >
> > Dim dbName as String
> >
> > Dim maRequeteSQL As String, monTexte As String, Login As String,
> > MotDePasse As String
> > Dim i As Integer
> >
> >   'Nom de la base de donnée
> >   'Affichage > Source de données ou en appuyant sur F4
> >
> >   dbName = "test"
> >
> >   'Paramètres de connexion
> >   Login = ""
> >   MotDePasse = ""
> >
> >
> >   'Vote requête SQL
> >   maRequeteSQL = "select * from  DVD"

                maRequeteSQL = "Select * FROM ""DVD"" ;"

               il me semble que les noms de tables doivent être protégés dans
                la formulation du SQL OOo. Et les requêtes se terminent par ";"
                C'est du moins ainsi qu'elles fonctionnent chez moi.
> >
> >   'Connexion à la base
> >   monServiceDB  = createUnoService("com.sun.star.sdb.DatabaseContext")
> >   maSource = monServiceDB.getByName(dbName)
> >   maConnection = maSource.GetConnection(Login,MotDePasse)
> >
> >   'SQL
> >   monStatement  = maConnection.createStatement()
> >   monResultSet  = monStatement.executeQuery(maRequeteSQL)
> >
> >   'Affichage des résultats
> >   'getString ou getInt en fonction du type de la variable
> >   'avec en paramètre le numéro de la colonne
> >   'ici la 3 ème colonne => TitreFilm
> >   'et la 4 ème => PrixAchat

        i = 0
        Déjà c'est mieux quand un indice est explicitement
        initialisé. (0 ou autre selon le traitement envisagé).
        Mais c'est encore mieux lorsqu'il sert ! A quoi sert-il ici ?

> >   While monResultSet.next

> >     MsgBox "Le DVD " + monResultSet.getString(3) + " est à " +
> > monResultSet.getInt(4) + " €"
Il me semble qu'en lecture avec des getInt() ou autres la numérotation des
colonnes débute à 0, alors que
avec des updateInt() elle commence à 1. Donc essayez plutôt, (je préfère les
"&" aux "+" et "&_" supose un passage à la ligne. "_" est le caractère de 
continuation) :
                MsgBox "Le DVD " + monResultSet.getString(2) & " est à " &_
monResultSet.getInt(3) & " €"

ou mieux
                MsgBox "Le DVD " + monResultSet.getByName("TitreFilm").String & 
" est à " &_
monResultSet.getByName("PrixAchat").Int & " €"

> >     i = i + 1       
Très bien pour i mais même remarque. A quoi sert-il ?

> >   Wend
> >
> >  'Fermeture de la connexion
        monResultSet.Dispose
> >  monResultSet.close()
> >  maConnection.close()
> > End Sub
> >
> > Cordialement,
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à