RE: [prog] Resultset non nul pour une table vide

2005-05-12 Thread Jean-Claude . David2
De mémoire, il me semble que le pointeur du resultSet pointe sur
l'enregistrement "avant" le premier enregistrement.
Je le parcoure alors de la manière suivante :

oRst = oStatement.ExecuteQuery(strSQL) 'Exécution de la requête
'Parcoure les enregistrements
Do While oRst.Next
...
Loop

Le IsNull() doit seulement indiquer la réussite de l'ouverture du resultset.

Jean-Claude


De : Martin blaizot [mailto:[EMAIL PROTECTED]
 
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Materiel")
Connection = DataSource.GetConnection("","")
Matable = Connection.Tables.getbyname("Provisoire")
Statement = Connection.createStatement()
Resultset = Statement.executeQuery("SELECT *  FROM "& Matable.name &"")
If Not IsNull(Resultset) Then
 Resultset.first
 Print"le libellé de mon premier champ est : ",Resultset.getString(1)
End if
 
Il me trouve un enregistrement alors que ma table est vide !!!

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



RE: [prog] Resultset non nul pour une table vide

2005-05-12 Thread Jean-Claude . David2
Ci dessous extraits de la doc qui expliquent pour le resultset qu'un
executequery n'est jamais null, et que le curseur est positionné à l'origine
"before the first row"


Jean-Claude

=
executeQuery( [in] string sql) raises(SQLException ); 

Description  : executes a SQL statement that returns a single ResultSet. 
Parameter sql : the SQL statement which should be executed 
Returns : a ResultSet that contains the data produced by the query; never
NULL 
Throws : SQLException if a database access error occurs.  


next()  raises( SQLException ); 

Description : moves the cursor down one row from its current position. 
A ResultSet cursor is initially positioned before the first row; the first
call to next makes the first row the current row; the second call makes the
second row the current row, and so on. 

If an input stream is open for the current row, a call to the method next
will implicitly close it. The ResultSet's warning chain is cleared when a
new row is read. 

Returns : true if successful 
Throws : SQLException if a database access error occurs. 


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



Re: [prog] Resultset non nul pour une table vide

2005-05-12 Thread Bernard Marcelly
Le 2005-05-12 15:54, Martin blaizot a écrit :
Bonjour à tous,
je crois que je suis un peu fatigué ! 

le truc suivant est en train de me rendre fou :
J'ai une table qui ne contient aucun enregistrement (table "Provisoire" de la base 
"Matériel")
avec le code suivant,
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Materiel")
Connection = DataSource.GetConnection("","")
Matable = Connection.Tables.getbyname("Provisoire")
Statement = Connection.createStatement()
Resultset = Statement.executeQuery("SELECT *  FROM "& Matable.name &"")
If Not IsNull(Resultset) Then
 Resultset.first
 Print"le libellé de mon premier champ est : ",Resultset.getString(1)
End if
Il me trouve un enregistrement alors que ma table est vide !!!
Je ne comprend plus; ça devrait pourtant être évident, mais là je fatigue; si 
une âme charitable pouvait m'éclairer !
D'avance merci,
Martin
ResultSet.first est une fonction. Elle renvoie vrai si elle a pu être 
exécutée. Testes donc le résultat.

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


Re: [prog] Resultset non nul pour une table vide

2005-05-12 Thread mblaizot
Bonsoir Jean-claude,
effectivement, le resultset pointe avant le premier résultat de la requête. 
C'est pourquoi j'utilise resultset.first pour me placer sur le premier 
enregistrement correspondant au critère. Je pourrais d'ailleurs faire 
Resultset.next, il me semble que le résultat serait le même.
De toute manière, cette table que j'interroge ne peux contenir qu'un seul 
enregistrement.
Ce qui est curieux, c'est que ma requête me renvoie un résultat (Print 
Resultset.getstring(1) ) alors que ma table est vide.

Amicalement,
Martin

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


Re: [prog] Resultset non nul pour une table vide

2005-05-12 Thread Martin Blaizot
Bonsoir Bernard,
Désolé, mais je ne comprend pas ta réponse.
quand je fais : Print"le libellé de mon premier champ est : 
",Resultset.getString(1)

c'est bien le résultat que je teste, non ?
et j'obtient un texte du genre "Matériel sup n° n", alors que ce matériel 
n'est pas présent dans le champ n°1 de ma table.

Merci,
Martin 


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


Re: [prog] Resultset non nul pour une table vide

2005-05-12 Thread Bernard Marcelly
Le 2005-05-12 20:35, Martin Blaizot a écrit :
Bonsoir Bernard,
Désolé, mais je ne comprend pas ta réponse.
quand je fais : Print"le libellé de mon premier champ est : 
",Resultset.getString(1)

c'est bien le résultat que je teste, non ?
et j'obtient un texte du genre "Matériel sup n° n", alors que ce 
matériel n'est pas présent dans le champ n°1 de ma table.

si first renvoie False, alors il n'a pas pu se placer sur le premier 
résultat. Dans ce cas le getString donnera n'importe quoi. A mon avis, 
si le résultat de la requête est vide, il sera difficile de se placer 
sur le premier enregistrement.

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