Partager via


MoveFirst, MoveLast, MoveNext et MovePrevious, méthodes – Exemple (VJ++)

S’applique à : Access 2013, Office 2013

Cet exemple utilise les méthodes MoveFirst, MoveLast, MoveNext et MovePrevious pour déplacer le pointeur d’un enregistrement d’un objet Recordset selon la commande fournie. La procédure MoveAny est nécessaire à l'exécution de cet exemple.

 
// BeginMoveFirstJ 
import com.ms.wfc.data.*; 
import java.io.*; 
 
public class MoveFirstX // DLL name. 
{ 
 // Main Function 
 
 public static void main( String rgArg[] ) 
 { 
 MoveFirstX(); 
 } 
 
 // MoveFirstX Function 
 
 static void MoveFirstX() 
 { 
 // Declarations 
 Recordset rsAuthors = null; 
 BufferedReader in = 
 new BufferedReader(new InputStreamReader(System.in)); 
 String line = null; 
 
 String strCnn = "Provider='sqloledb';Data Source='MySqlServer';" 
 + "Initial Catalog='Pubs';Integrated Security='SSPI';"; 
 
 String strMessage = "UPDATE Titles SET type = 'psychology' " 
 +"WHERE type = 'self_help'"; 
 
 int intCommand = 0; 
 String strFName; 
 String strLName; 
 
 try 
 { 
 // Open recordset from Authors table. 
 rsAuthors = new Recordset(); 
 rsAuthors.setCursorLocation( AdoEnums.CursorLocation.CLIENT ); 
 
 // Use client cursor to enable AbsolutePosition property. 
 rsAuthors.open( "Authors", strCnn, AdoEnums.CursorType.STATIC, 
 AdoEnums.LockType.BATCHOPTIMISTIC, AdoEnums.CommandType.TABLE ); 
 
 // Get user's move requests and show current record information. 
 while( true ) // Continuous loop. 
 { 
 // Assign field information to variable to simplify output code. 
 strFName = rsAuthors.getField("au_fname").getString(); 
 strLName = rsAuthors.getField("au_lname").getString(); 
 
 System.out.println 
 ( "\nName: " + strFName + " " + strLName + "\n" 
 + "Record " + rsAuthors.getAbsolutePosition() 
 + " of " + rsAuthors.getRecordCount() + "\n\n" ); 
 System.out.println( "[1 - MoveFirst, 2 - MoveLast, \n"); 
 System.out.println( " 3 - MoveNext, 4 - MovePrevious]\n"); 
 
 // User types a number followed by enter (cr-lf). 
 line = in.readLine(); 
 
 // No entry exits program loop. 
 if (line.length() == 0) break; 
 // Convert string entry to int. 
 intCommand = Integer.parseInt(line); 
 // Out of range entry exits program loop. 
 if ((intCommand < 1) || (intCommand > 4)) break; 
 
 // Call method based on user's validated selection. 
 MoveAny(intCommand, rsAuthors); 
 } 
 } 
 catch( AdoException ae ) 
 { 
 // Notify user of any errors that result from ADO. 
 
 // As passing a Recordset, check for null pointer first. 
 if (rsAuthors != null) 
 { 
 PrintProviderError(rsAuthors.getActiveConnection()); 
 } 
 else 
 { 
 System.out.println("Exception: " + ae.getMessage()); 
 } 
 } 
 // System Read requires this catch. 
 catch( java.io.IOException je ) 
 { 
 PrintIOError(je); 
 } 
 
 finally 
 { 
 // Cleanup objects before exit. 
 if (rsAuthors != null) 
 if (rsAuthors.getState() == 1) 
 rsAuthors.close(); 
 } 
 } 
 
 // MoveAny Function 
 
 static void MoveAny(int intChoice, Recordset rsTemp) 
 { 
 // Move per selection from user, checking for BOF and EOF. 
 try 
 { 
 switch(intChoice) 
 { 
 case 1: // Equals char of 1. 
 rsTemp.moveFirst(); 
 break; 
 case 2: // Equals char of 2. 
 rsTemp.moveLast(); 
 break; 
 case 3: // Equals char of 3. 
 rsTemp.moveNext(); 
 if(rsTemp.getEOF()) 
 { 
 System.out.println("\nAlready at end of recordset!\n"); 
 rsTemp.moveLast(); 
 } 
 break; 
 case 4: // Equals char of 4. 
 rsTemp.movePrevious(); 
 if(rsTemp.getBOF()) 
 { 
 System.out.println 
 ("\nAlready at beginning of recordset!\n"); 
 rsTemp.moveFirst(); 
 } 
 break; 
 default: 
 break; 
 } 
 } 
 catch( AdoException ae ) 
 { 
 // Notify user of any errors that result from ADO. 
 
 // As passing a Recordset, check for null pointer first. 
 if (rsTemp != null) 
 { 
 PrintProviderError(rsTemp.getActiveConnection()); 
 } 
 else 
 { 
 System.out.println("Exception: " + ae.getMessage()); 
 } 
 } 
 } 
 
 // PrintProviderError Function 
 
 static void PrintProviderError( Connection Cnn1 ) 
 { 
 // Print Provider errors from Connection object. 
 // ErrItem is an item object in the Connections Errors collection. 
 com.ms.wfc.data.Error ErrItem = null; 
 long nCount = 0; 
 int i = 0; 
 
 nCount = Cnn1.getErrors().getCount(); 
 
 // If there are any errors in the collection, print them. 
 if( nCount > 0); 
 { 
 // Collection ranges from 0 to nCount - 1 
 for (i = 0; i< nCount; i++) 
 { 
 ErrItem = Cnn1.getErrors().getItem(i); 
 System.out.println("\t Error number: " + ErrItem.getNumber() 
 + "\t" + ErrItem.getDescription() ); 
 } 
 } 
 
 } 
 
 // PrintIOError Function 
 
 static void PrintIOError( java.io.IOException je) 
 { 
 System.out.println("Error \n"); 
 System.out.println("\tSource = " + je.getClass() + "\n"); 
 System.out.println("\tDescription = " + je.getMessage() + "\n"); 
 } 
} 
// EndMoveFirstJ