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]