6 messages in org.openoffice.fr.progRe: [prog] Re: Un essai infructueux ...
FromSent OnAttachments
Jean SympaAug 8, 2007 7:05 am 
aladdinAug 9, 2007 5:41 am 
Jean SympaAug 10, 2007 3:08 am 
Francois GattoAug 10, 2007 10:19 am 
jean...@centraliens.netAug 11, 2007 6:06 am 
aladdinAug 12, 2007 3:40 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:Re: [prog] Re: Un essai infructueux de MacroActions...
From:jean...@centraliens.net (jean@centraliens.net)
Date:Aug 11, 2007 6:06:58 am
List:org.openoffice.fr.prog

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, jsy@free.fr 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,