1*b1cdbd2cSJim Jagielski/************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_sdb_RowSet_idl__ 24*b1cdbd2cSJim Jagielski#define __com_sun_star_sdb_RowSet_idl__ 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_sdbc_RowSet_idl__ 27*b1cdbd2cSJim Jagielski#include <com/sun/star/sdbc/RowSet.idl> 28*b1cdbd2cSJim Jagielski#endif 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielskimodule com { module sun { module star { module sdbc { 31*b1cdbd2cSJim Jagielskipublished interface XConnection; 32*b1cdbd2cSJim Jagielski};};};}; 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_sdb_ResultSet_idl__ 35*b1cdbd2cSJim Jagielski#include <com/sun/star/sdb/ResultSet.idl> 36*b1cdbd2cSJim Jagielski#endif 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_sdb_XCompletedExecution_idl__ 39*b1cdbd2cSJim Jagielski#include <com/sun/star/sdb/XCompletedExecution.idl> 40*b1cdbd2cSJim Jagielski#endif 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski module com { module sun { module star { module sdbcx { 43*b1cdbd2cSJim Jagielskipublished interface XDeleteRows; 44*b1cdbd2cSJim Jagielski};};};}; 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski module com { module sun { module star { module sdb { 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielskipublished interface XRowSetApproveBroadcaster; 49*b1cdbd2cSJim Jagielskipublished interface XResultSetAccess; 50*b1cdbd2cSJim Jagielskipublished interface XParametersSupplier; 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski/** is a client side RowSet, which use retrieves is data based on a database table, 54*b1cdbd2cSJim Jagielski a query or a SQL command or by a rowset reader, who mustn't support SQL. 55*b1cdbd2cSJim Jagielski The connection of the rowset is typically a named DataSource or a DataAccess component 56*b1cdbd2cSJim Jagielski or a previous instanciated connection. 57*b1cdbd2cSJim Jagielski <p> 58*b1cdbd2cSJim Jagielski Depending on the 59*b1cdbd2cSJim Jagielski <type scope="com::sun::star::sdbc">ResultSetConcurrency</type> 60*b1cdbd2cSJim Jagielski , the RowSet caches all data or uses 61*b1cdbd2cSJim Jagielski an optimized way for retrieving the data, such as, refetching rows by their keys or 62*b1cdbd2cSJim Jagielski if provided, by their bookmarks. 63*b1cdbd2cSJim Jagielski </p> 64*b1cdbd2cSJim Jagielski <p> 65*b1cdbd2cSJim Jagielski In addition, it provides events for RowSet navigation and RowSet modifications 66*b1cdbd2cSJim Jagielski to approve the actions and to react on them. 67*b1cdbd2cSJim Jagielski @see com::sun::star::sdb::RowChangeAction 68*b1cdbd2cSJim Jagielski @see com::sun::star::sdb::RowChangeEvent 69*b1cdbd2cSJim Jagielski @see com::sun::star::sdb::RowsChangeEvent 70*b1cdbd2cSJim Jagielski </p> 71*b1cdbd2cSJim Jagielski 72*b1cdbd2cSJim Jagielski <h3>Notifications</h3> 73*b1cdbd2cSJim Jagielski <p>A row set is able to be operated in various ways, and additionally it notifies various changes in it's 74*b1cdbd2cSJim Jagielski state. Clients of this service can rely on a fixed order of notifications, depending on how they operate 75*b1cdbd2cSJim Jagielski on the component.</br> 76*b1cdbd2cSJim Jagielski The following describes the general order of all possible notifications which you can encounter when 77*b1cdbd2cSJim Jagielski working with a row set: 78*b1cdbd2cSJim Jagielski <table> 79*b1cdbd2cSJim Jagielski <tr><td valign="top"><em>approving</em></td> 80*b1cdbd2cSJim Jagielski <td valign="top">Before anything really happens, any veto listeners are called to approve the operation 81*b1cdbd2cSJim Jagielski which is just being done. This may be either a 82*b1cdbd2cSJim Jagielski <member>XRowSetApproveListener::approveCursorMove</member> or 83*b1cdbd2cSJim Jagielski <member>XRowSetApproveListener::approveRowChange</member> call. 84*b1cdbd2cSJim Jagielski @see XRowSetApproveListener 85*b1cdbd2cSJim Jagielski </td> 86*b1cdbd2cSJim Jagielski </tr> 87*b1cdbd2cSJim Jagielski <tr><td valign="top"><em>column values</em></td> 88*b1cdbd2cSJim Jagielski <td valign="top">If the opration includes changes in the values of the columns of the row set, then these are 89*b1cdbd2cSJim Jagielski notified before anything else (except requests for approval). 90*b1cdbd2cSJim Jagielski @see ResultSet 91*b1cdbd2cSJim Jagielski @see com::sun::star::sdbcx::XColumnsSupplier 92*b1cdbd2cSJim Jagielski </td> 93*b1cdbd2cSJim Jagielski </tr> 94*b1cdbd2cSJim Jagielski <tr><td valign="top"><em>operation done</em></td> 95*b1cdbd2cSJim Jagielski <td valign="top">When the operation is done, you get a notification about this. It may be a 96*b1cdbd2cSJim Jagielski <member scope="com::sun::star::sdbc">XRowSetListener::cursorMoved</member> or a 97*b1cdbd2cSJim Jagielski <member scope="com::sun::star::sdbc">XRowSetListener::rowChanged</member> call or a 98*b1cdbd2cSJim Jagielski <member>XRowsChangeListener::rowsChanged</member> call. 99*b1cdbd2cSJim Jagielski </td> 100*b1cdbd2cSJim Jagielski </tr> 101*b1cdbd2cSJim Jagielski <tr><td valign="top"><em>row state</em></td> 102*b1cdbd2cSJim Jagielski <td valign="top">If the operation leads to a change in the state of the <member>IsModified</member> 103*b1cdbd2cSJim Jagielski and/or <member>IsNew</member> property, this is notified next (in this order). 104*b1cdbd2cSJim Jagielski </td> 105*b1cdbd2cSJim Jagielski </tr> 106*b1cdbd2cSJim Jagielski <tr><td valign="top"><em>row count</em></td> 107*b1cdbd2cSJim Jagielski <td valign="top">If the operation leads to new knowledge about the number of rows in the result set, 108*b1cdbd2cSJim Jagielski the respective changes in the <member>RowCount</member> and <member>IsRowCountFinal</member> 109*b1cdbd2cSJim Jagielski are notified last (in this order). 110*b1cdbd2cSJim Jagielski </td> 111*b1cdbd2cSJim Jagielski </tr> 112*b1cdbd2cSJim Jagielski </table> 113*b1cdbd2cSJim Jagielski </p> 114*b1cdbd2cSJim Jagielski 115*b1cdbd2cSJim Jagielski <br/> 116*b1cdbd2cSJim Jagielski 117*b1cdbd2cSJim Jagielski <p>The following matrix shows the notifications which apply to the different operations: 118*b1cdbd2cSJim Jagielski <table border="1" frame="all"> 119*b1cdbd2cSJim Jagielski <tr><td/><td><strong>approveCursorMove</strong></td><td><strong>approveRowChange</strong></td> 120*b1cdbd2cSJim Jagielski <td><strong>column values</strong></td> 121*b1cdbd2cSJim Jagielski <td><strong>cursorMoved</strong></td><td><strong>rowChanged</strong></td> 122*b1cdbd2cSJim Jagielski <td><strong>rowsChanged</strong></td> 123*b1cdbd2cSJim Jagielski <td><strong>IsModified</strong></td><td><strong>IsNew</strong></td> 124*b1cdbd2cSJim Jagielski <td><strong>RowCount</strong></td><td><strong>IsRowCountFinal</strong></td> 125*b1cdbd2cSJim Jagielski </tr> 126*b1cdbd2cSJim Jagielski 127*b1cdbd2cSJim Jagielski <tr><td><type scope="com::sun::star::sdbc">XResultSet</type></td><td/><td/><td/><td/><td/><td/><td/><td/></tr> 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski <tr><td align="right"><em>next</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td> 130*b1cdbd2cSJim Jagielski <tr><td align="right"><em>beforeFirst</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td/><td/></tr> 131*b1cdbd2cSJim Jagielski <tr><td align="right"><em>afterLast</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr> 132*b1cdbd2cSJim Jagielski <tr><td align="right"><em>first</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr> 133*b1cdbd2cSJim Jagielski <tr><td align="right"><em>last</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr> 134*b1cdbd2cSJim Jagielski <tr><td align="right"><em>absolute</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr> 135*b1cdbd2cSJim Jagielski <tr><td align="right"><em>relative</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr> 136*b1cdbd2cSJim Jagielski <tr><td align="right"><em>previous</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr> 137*b1cdbd2cSJim Jagielski <tr><td align="right"><em>refreshRow</em></td><td/><td/><td align="center">X</td><td/><td/><td/><td align="center">X</td><td align="center">X</td><td/><td/></tr> 138*b1cdbd2cSJim Jagielski <tr><td align="right"><em>cancelRowUpdates</em></td><td/><td/><td align="center">X</td><td/><td/><td/><td align="center">X</td><td/><td/><td/></tr> 139*b1cdbd2cSJim Jagielski 140*b1cdbd2cSJim Jagielski <tr><td><type scope="com::sun::star::sdbc">XResultSetUpdate</type></td><td/><td/><td/><td/><td/><td/><td/><td/></tr> 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski <tr><td align="right"><em>insertRow</em></td><td/><td align="center">X</td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr> 143*b1cdbd2cSJim Jagielski <tr><td align="right"><em>updateRow</em></td><td/><td align="center">X</td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td/><td/><td/></tr> 144*b1cdbd2cSJim Jagielski <tr><td align="right"><em>deleteRow</em></td><td/><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr> 145*b1cdbd2cSJim Jagielski <tr><td align="right"><em>moveToInsertRow</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td/><td align="center">X</td><td align="center">X</td></tr> 146*b1cdbd2cSJim Jagielski <tr><td align="right"><em>moveToCurrentRow</em></td><td align="center">X</td><td/><td/><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td/><td/></tr> 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim Jagielski <tr><td><type scope="com::sun::star::sdbcx">XDeleteRows</type></td><td/><td/><td/><td/><td/><td/><td/><td/></tr> 149*b1cdbd2cSJim Jagielski 150*b1cdbd2cSJim Jagielski <tr><td align="right"><em>deleteRows</em></td><td/><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr> 151*b1cdbd2cSJim Jagielski 152*b1cdbd2cSJim Jagielski <tr><td><type scope="com::sun::star::sdbcx">XRowLocate</type></td><td/><td/><td/><td/><td/><td/><td/><td/></tr> 153*b1cdbd2cSJim Jagielski 154*b1cdbd2cSJim Jagielski <tr><td align="right"><em>moveToBookmark</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td/><td/></tr> 155*b1cdbd2cSJim Jagielski <tr><td align="right"><em>moveRelativeToBookmark</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr> 156*b1cdbd2cSJim Jagielski 157*b1cdbd2cSJim Jagielski </tr> 158*b1cdbd2cSJim Jagielski </table> 159*b1cdbd2cSJim Jagielski </p> 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski <h3>Deletions</h3> 162*b1cdbd2cSJim Jagielski <p>Via <member scope="com::sun::star::sdbc">XResultSetUpdate::deleteRow</member>, you can delete the current row of a 163*b1cdbd2cSJim Jagielski <type>RowSet</type>. This deleted row then doesn't vanish immediately, but is still present, and subsequent calls to 164*b1cdbd2cSJim Jagielski <member scope="com::sun::star::sdbc">XResultSet::rowDeleted</member> will return <TRUE/>. The deleted row "vanishes" from 165*b1cdbd2cSJim Jagielski the <type>RowSet</type> as soon as the cursor is moved away from it.<br/> 166*b1cdbd2cSJim Jagielski As a consequence, the behaviour of several other methods is affected:<br/> 167*b1cdbd2cSJim Jagielski <dl> 168*b1cdbd2cSJim Jagielski <dt><member scope="com::sun::star::sdbc">XResultSet::getRow</member></dt> 169*b1cdbd2cSJim Jagielski <dd>returns the position of the cursor, which has not been changed by the deletion.</dd> 170*b1cdbd2cSJim Jagielski 171*b1cdbd2cSJim Jagielski <dt><type scope="com::sun::star::sdbc">XResultSet</type>: <code>next</code>, <code>first</code>, <code>last</code>, <code>absolute</code>, 172*b1cdbd2cSJim Jagielski <code>relative</code>, <code>previous</code>, <code>beforeFirst</code>, <code>afterLast</code></dt> 173*b1cdbd2cSJim Jagielski <dd>will let the deleted row vanish from the result set. As a consequence, the <member>RowCount</member> 174*b1cdbd2cSJim Jagielski will decrease when you do such a move operation after deleting a row.<br/> 175*b1cdbd2cSJim Jagielski A special case to note is the <code>next<code> call: When you delete row, say, 176*b1cdbd2cSJim Jagielski <code>15</code>, followed by <code>next</code>, then your <type>RowSet</type> afterwards 177*b1cdbd2cSJim Jagielski still is on row 15, since the deleted row vanished with the move operation.</dd> 178*b1cdbd2cSJim Jagielski 179*b1cdbd2cSJim Jagielski <dt><member scope="com::sun::star::sdbc">XResultSet::refreshRow</member></dt> 180*b1cdbd2cSJim Jagielski <dd>will throw an exception when the cursor is on a deleted row.</dd> 181*b1cdbd2cSJim Jagielski 182*b1cdbd2cSJim Jagielski <dt><type scope="com::sun::star::sdbc">XRow</type>: <code>getFoo</code></dt> 183*b1cdbd2cSJim Jagielski <dd>will return an empty value when the cursor is on a deleted row.</dd> 184*b1cdbd2cSJim Jagielski 185*b1cdbd2cSJim Jagielski <dt><member scope="com::sun::star::sdbcx">XRowLocate::getBookmark</member></dt> 186*b1cdbd2cSJim Jagielski <dd>will throw an exception when the cursor is on a deleted row.</dd> 187*b1cdbd2cSJim Jagielski 188*b1cdbd2cSJim Jagielski <dt><type scope="com::sun::star::sdbc">XRowUpdate</type>: <code>updateFoo</code></dt> 189*b1cdbd2cSJim Jagielski <dd>will throw an exception when the cursor is on a deleted row.</dd> 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski <dt><member scope="com::sun::star::sdbc">XResultSetUpdate::deleteRow</member></dt> 192*b1cdbd2cSJim Jagielski <dd>will throw an exception when the cursor is on a deleted row.</dd> 193*b1cdbd2cSJim Jagielski 194*b1cdbd2cSJim Jagielski <dt><member scope="com::sun::star::sdbc">XResultSetUpdate::moveToInsertRow</member></dt> 195*b1cdbd2cSJim Jagielski <dd>will let the deleted row vanish from the result set. As a consequence, the <member>RowCount</member> 196*b1cdbd2cSJim Jagielski will decrease. Also, subsequent calls to 197*b1cdbd2cSJim Jagielski <member scope="com::sun::star::sdbc">XResultSetUpdate::moveToCurrentRow</member> will not 198*b1cdbd2cSJim Jagielski be able to move back to the deleted row (since it vanished), but only to the 199*b1cdbd2cSJim Jagielski row after the deleted row.</dd> 200*b1cdbd2cSJim Jagielski </dl> 201*b1cdbd2cSJim Jagielski </p> 202*b1cdbd2cSJim Jagielski */ 203*b1cdbd2cSJim Jagielskipublished service RowSet 204*b1cdbd2cSJim Jagielski{ 205*b1cdbd2cSJim Jagielski service com::sun::star::sdbc::RowSet; 206*b1cdbd2cSJim Jagielski 207*b1cdbd2cSJim Jagielski service com::sun::star::sdb::ResultSet; 208*b1cdbd2cSJim Jagielski 209*b1cdbd2cSJim Jagielski /** can be used to allow an interaction handler to supply missing data during a execute process. 210*b1cdbd2cSJim Jagielski 211*b1cdbd2cSJim Jagielski <p>If you want a row set to be based on a parametrized query, you will usually use 212*b1cdbd2cSJim Jagielski the <type scope="com::sun::star::sdbc">XParameters</type> interface.<br/> 213*b1cdbd2cSJim Jagielski However, you can also choose to let an interaction handler supply such data. For this, you may 214*b1cdbd2cSJim Jagielski for instance instantiate an <type>InteractionHandler</type>, which asks the user for the 215*b1cdbd2cSJim Jagielski data, or you may write your own one, which supplies the data from somewhere else. 216*b1cdbd2cSJim Jagielski The default implementation will only ask for parameters which aren't set before through the <type scope="com::sun::star::sdbc">XParameters</type> interface.</p> 217*b1cdbd2cSJim Jagielski 218*b1cdbd2cSJim Jagielski @see com::sun::star::sdb::InteractionHandler 219*b1cdbd2cSJim Jagielski */ 220*b1cdbd2cSJim Jagielski interface com::sun::star::sdb::XCompletedExecution; 221*b1cdbd2cSJim Jagielski 222*b1cdbd2cSJim Jagielski /** approving of actions performed on the rowset. 223*b1cdbd2cSJim Jagielski 224*b1cdbd2cSJim Jagielski <p>The support of this interface implies a sematical extension to the <type scope="com::sun::star::sdbc">XResultSetUpdate</type> 225*b1cdbd2cSJim Jagielski interface which is supported via the <type scope="com::sun::star::sdbc">ResultSet</type>.</p> 226*b1cdbd2cSJim Jagielski 227*b1cdbd2cSJim Jagielski @see XResultSetUpdate 228*b1cdbd2cSJim Jagielski */ 229*b1cdbd2cSJim Jagielski interface XRowSetApproveBroadcaster; 230*b1cdbd2cSJim Jagielski 231*b1cdbd2cSJim Jagielski /** is the interface for updating row data to the database. 232*b1cdbd2cSJim Jagielski 233*b1cdbd2cSJim Jagielski <p>The optional support of this interface is already implied with the support of the <type scope="com::sun::star::sdbc">ResultSet</type> service.</p> 234*b1cdbd2cSJim Jagielski 235*b1cdbd2cSJim Jagielski <p>However, note that the additional support of the <type>XRowSetApproveBroadcaster</type> interface results 236*b1cdbd2cSJim Jagielski in a sematical extension: the methods <member scope="com::sun::star::sdbc">XResultSetUpdate::insertRow</member>, 237*b1cdbd2cSJim Jagielski <member scope="com::sun::star::sdbc">XResultSetUpdate::updateRow</member> and <member scope="com::sun::star::sdbc">XResultSetUpdate::deleteRow</member> 238*b1cdbd2cSJim Jagielski will now throw the <type>RowSetVetoException</type> if the action which is to be performed was vetoed 239*b1cdbd2cSJim Jagielski by one of the <type>XRowSetApproveListener</type>'s.</p> 240*b1cdbd2cSJim Jagielski */ 241*b1cdbd2cSJim Jagielski [optional] interface com::sun::star::sdbc::XResultSetUpdate; 242*b1cdbd2cSJim Jagielski 243*b1cdbd2cSJim Jagielski /** is the interface for deleting more than one row, identified by it's bookmark. 244*b1cdbd2cSJim Jagielski 245*b1cdbd2cSJim Jagielski <p>The optional support of this interface is already implied with the support of the <type scope="com::sun::star::sdbcx">ResultSet</type> service.</p> 246*b1cdbd2cSJim Jagielski 247*b1cdbd2cSJim Jagielski <p>However, note that the additional support of the <type>XRowSetApproveBroadcaster</type> interface results 248*b1cdbd2cSJim Jagielski in a sematical extension: the method <member scope="com::sun::star::sdbcx">XDeleteRows::deleteRows</member> 249*b1cdbd2cSJim Jagielski will now throw the <type>RowSetVetoException</type> if the deletion was vetoed 250*b1cdbd2cSJim Jagielski by one of the <type>XRowSetApproveListener</type>'s.</p> 251*b1cdbd2cSJim Jagielski */ 252*b1cdbd2cSJim Jagielski [optional] interface com::sun::star::sdbcx::XDeleteRows; 253*b1cdbd2cSJim Jagielski 254*b1cdbd2cSJim Jagielski /** creates a second result set which is based on the same data. 255*b1cdbd2cSJim Jagielski <p> 256*b1cdbd2cSJim Jagielski The new result set is interoperable with the row set which created it, 257*b1cdbd2cSJim Jagielski e.g., you can exchange bookmarks between both sets. 258*b1cdbd2cSJim Jagielski </p> 259*b1cdbd2cSJim Jagielski <p> 260*b1cdbd2cSJim Jagielski If the row set is not alive (i.e., it was not executed before), 261*b1cdbd2cSJim Jagielski <NULL/> 262*b1cdbd2cSJim Jagielski is returned. 263*b1cdbd2cSJim Jagielski </p> 264*b1cdbd2cSJim Jagielski */ 265*b1cdbd2cSJim Jagielski interface XResultSetAccess; 266*b1cdbd2cSJim Jagielski 267*b1cdbd2cSJim Jagielski /** gives access to the parameters contained in the SQL statement represented by the component. 268*b1cdbd2cSJim Jagielski 269*b1cdbd2cSJim Jagielski <p>If your <code>RowSet</code> is bound to an SQL command or query which contains parameters, or has 270*b1cdbd2cSJim Jagielski a <member>Filter</member> or <member>Order</member> which contains parameters, then those can be accessed 271*b1cdbd2cSJim Jagielski using the <code>XParametersSupplier</code> interface.</p> 272*b1cdbd2cSJim Jagielski 273*b1cdbd2cSJim Jagielski <p>The returned container contains parameter objects which do allow write access to the parameters (which 274*b1cdbd2cSJim Jagielski is equivalent to using the <type scope="com::sun::star::sdbc">XParameters</type> interface inherited from 275*b1cdbd2cSJim Jagielski <type scope="com::sun::star::sdbc">RowSet</type>). Additionally, they provide information about the parameters, 276*b1cdbd2cSJim Jagielski such as their name (if they have one), their type, and the like.</p> 277*b1cdbd2cSJim Jagielski */ 278*b1cdbd2cSJim Jagielski [optional] interface XParametersSupplier; 279*b1cdbd2cSJim Jagielski 280*b1cdbd2cSJim Jagielski /** is the connection generated by a DataSource or by a URL. It could 281*b1cdbd2cSJim Jagielski also be set from outside. When set from outside the RowSet is not responsible for the closing of the connection. 282*b1cdbd2cSJim Jagielski */ 283*b1cdbd2cSJim Jagielski [property] com::sun::star::sdbc::XConnection ActiveConnection; 284*b1cdbd2cSJim Jagielski 285*b1cdbd2cSJim Jagielski 286*b1cdbd2cSJim Jagielski /** is the name of the datasource to use, this could be a named datasource 287*b1cdbd2cSJim Jagielski or the URL of a data access component. 288*b1cdbd2cSJim Jagielski */ 289*b1cdbd2cSJim Jagielski [property] string DataSourceName; 290*b1cdbd2cSJim Jagielski 291*b1cdbd2cSJim Jagielski 292*b1cdbd2cSJim Jagielski /** is the command which should be executed, the type of command depends 293*b1cdbd2cSJim Jagielski on the CommandType. 294*b1cdbd2cSJim Jagielski 295*b1cdbd2cSJim Jagielski <p>In case of a <member>CommandType</member> of <member>CommandType::COMMAND</member>, 296*b1cdbd2cSJim Jagielski means in case the <member>Command</member> specifies an SQL statement, the inherited 297*b1cdbd2cSJim Jagielski <member scope="com::sun::star::sdbc">RowSet::EscapeProcessing</member> 298*b1cdbd2cSJim Jagielski becomes relevant:<br/> 299*b1cdbd2cSJim Jagielski It then can be to used to specify whether the SQL statement should be analyzed on the 300*b1cdbd2cSJim Jagielski client side before sending it to the database server.<br/> 301*b1cdbd2cSJim Jagielski The default value for <member scope="com::sun::star::sdbc">RowSet::EscapeProcessing</member> 302*b1cdbd2cSJim Jagielski is <TRUE/>. By switching it to <FALSE/>, you can pass backend-specific SQL statements, 303*b1cdbd2cSJim Jagielski which are not standard SQL, to your database.</p> 304*b1cdbd2cSJim Jagielski 305*b1cdbd2cSJim Jagielski @see com::sun::star::sdb::CommandType 306*b1cdbd2cSJim Jagielski @see com::sun::star::sdbc::RowSet::EscapeProcessing 307*b1cdbd2cSJim Jagielski */ 308*b1cdbd2cSJim Jagielski [property] string Command; 309*b1cdbd2cSJim Jagielski 310*b1cdbd2cSJim Jagielski /** is the type of the command. 311*b1cdbd2cSJim Jagielski @see com::sun::star::sdb::CommandType 312*b1cdbd2cSJim Jagielski */ 313*b1cdbd2cSJim Jagielski [property] long CommandType; 314*b1cdbd2cSJim Jagielski 315*b1cdbd2cSJim Jagielski /** is the command which is currently used. 316*b1cdbd2cSJim Jagielski @see com::sun::star::sdb::CommandType 317*b1cdbd2cSJim Jagielski */ 318*b1cdbd2cSJim Jagielski [readonly, property] string ActiveCommand; 319*b1cdbd2cSJim Jagielski 320*b1cdbd2cSJim Jagielski 321*b1cdbd2cSJim Jagielski /** indicates whether all results should be discarded or not. 322*b1cdbd2cSJim Jagielski */ 323*b1cdbd2cSJim Jagielski [property] boolean IgnoreResult; 324*b1cdbd2cSJim Jagielski 325*b1cdbd2cSJim Jagielski 326*b1cdbd2cSJim Jagielski /** additional filter for a rowset. 327*b1cdbd2cSJim Jagielski */ 328*b1cdbd2cSJim Jagielski [property] string Filter; 329*b1cdbd2cSJim Jagielski 330*b1cdbd2cSJim Jagielski 331*b1cdbd2cSJim Jagielski /** indicates whether the filter should be applied or not, 332*b1cdbd2cSJim Jagielski default is <FALSE/>. 333*b1cdbd2cSJim Jagielski */ 334*b1cdbd2cSJim Jagielski [property] boolean ApplyFilter; 335*b1cdbd2cSJim Jagielski 336*b1cdbd2cSJim Jagielski /** additional having clause for the row set 337*b1cdbd2cSJim Jagielski */ 338*b1cdbd2cSJim Jagielski [optional,property] string HavingClause; 339*b1cdbd2cSJim Jagielski 340*b1cdbd2cSJim Jagielski /** additional group by for the row set 341*b1cdbd2cSJim Jagielski */ 342*b1cdbd2cSJim Jagielski [optional,property] string GroupBy; 343*b1cdbd2cSJim Jagielski 344*b1cdbd2cSJim Jagielski /** is a additional sort order definition for a rowset. 345*b1cdbd2cSJim Jagielski */ 346*b1cdbd2cSJim Jagielski [property] string Order; 347*b1cdbd2cSJim Jagielski 348*b1cdbd2cSJim Jagielski 349*b1cdbd2cSJim Jagielski /** indicates the privileges for insert, update, and delete. 350*b1cdbd2cSJim Jagielski @see com::sun::star::sdbcx::Privilege 351*b1cdbd2cSJim Jagielski */ 352*b1cdbd2cSJim Jagielski [readonly, property] long Privileges; 353*b1cdbd2cSJim Jagielski 354*b1cdbd2cSJim Jagielski 355*b1cdbd2cSJim Jagielski /** indicates that the current row is modified. 356*b1cdbd2cSJim Jagielski */ 357*b1cdbd2cSJim Jagielski [readonly, property] boolean IsModified; 358*b1cdbd2cSJim Jagielski 359*b1cdbd2cSJim Jagielski 360*b1cdbd2cSJim Jagielski /** indicates that the current row is going to be inserted to the database. 361*b1cdbd2cSJim Jagielski */ 362*b1cdbd2cSJim Jagielski [readonly, property] boolean IsNew; 363*b1cdbd2cSJim Jagielski 364*b1cdbd2cSJim Jagielski 365*b1cdbd2cSJim Jagielski /** contains the number of rows accessed in a the data source. 366*b1cdbd2cSJim Jagielski */ 367*b1cdbd2cSJim Jagielski [readonly, property] long RowCount; 368*b1cdbd2cSJim Jagielski 369*b1cdbd2cSJim Jagielski 370*b1cdbd2cSJim Jagielski /** indicates that all rows of te row set have been counted. 371*b1cdbd2cSJim Jagielski */ 372*b1cdbd2cSJim Jagielski [readonly, property] boolean IsRowCountFinal; 373*b1cdbd2cSJim Jagielski 374*b1cdbd2cSJim Jagielski 375*b1cdbd2cSJim Jagielski /** is the name of the table which should be updated, this is usually used 376*b1cdbd2cSJim Jagielski for queries which relate to more than one table. 377*b1cdbd2cSJim Jagielski */ 378*b1cdbd2cSJim Jagielski [optional, property] string UpdateTableName; 379*b1cdbd2cSJim Jagielski 380*b1cdbd2cSJim Jagielski /** is the name of the table catalog 381*b1cdbd2cSJim Jagielski */ 382*b1cdbd2cSJim Jagielski [optional, property] string UpdateCatalogName; 383*b1cdbd2cSJim Jagielski 384*b1cdbd2cSJim Jagielski 385*b1cdbd2cSJim Jagielski /** is the name of the table schema. 386*b1cdbd2cSJim Jagielski */ 387*b1cdbd2cSJim Jagielski [optional, property] string UpdateSchemaName; 388*b1cdbd2cSJim Jagielski}; 389*b1cdbd2cSJim Jagielski 390*b1cdbd2cSJim Jagielski//============================================================================= 391*b1cdbd2cSJim Jagielski 392*b1cdbd2cSJim Jagielski}; }; }; }; 393*b1cdbd2cSJim Jagielski 394*b1cdbd2cSJim Jagielski/*=========================================================================== 395*b1cdbd2cSJim Jagielski===========================================================================*/ 396*b1cdbd2cSJim Jagielski#endif 397