一旦应用程序开始运行,如果在设计时设置了足够的属性,Visual Basic 将使用 RemoteData 控件建立与 ODBC 数据源的连接。这将使用控件的 DataSourceName、UserName、Password、Options、CursorDriver、LoginTimeout、Prompt 和 Connect 属性创建一个rdoConnection 对象。注意,所有这些属性对于 RemoteData 控件都是唯一的,但是 Data 控件通过其它属性将它们全部表现出来,如下所示:
| RemoteData 控件属性 | Data 控件属性 |
| Connect | Connect. |
| CursorDriver | (仅对 ODBCDirect) |
| DataSourceName | DatabaseName. |
| LoginTimeout | 嵌入 Connect 属性的连接字符串中。 |
| Options | Options. |
| Password | 嵌入 Connect 属性的连接字符串中。 |
| Prompt | (仅对 ODBCDirect) |
| UserName | 嵌入 Connect 属性的连接字符串中。 |
如果 RemoteData 控件属性所提供的信息不够,ODBC 驱动程序管理器将显示一个对话框,以获取漏掉的参数,除非设置了 Prompt 属性使该对话框无效。如果用户或代码没有提供足够的参数,那么将导致一个可以捕获的错误。
如果建立了连接,RemoteData 控件将根据用来建立连接的值,设置或重设 Environment、Connection、DataSourceName、Transactions 及 Connect 属性。
一旦连接被建立,RemoteData 控件立即使用 SQL、CursorDriver、Options、LockType、ErrorThreshold 和 ResultsetType 属性执行一个对应于该数据源的查询。这样就创建了一个 rdoResultset 对象,并设置了 Resultset、ResultsetType 和 Updatable 等属性。在缺省的情况下,将创建一个只读的静态 rdoResultset。在创建 rdoResultset 时 StillExecuting 属性被设为 True。如果希望取消该查询并设置了 rdAsyncEnable 选项,那么,可以使用 rdoResultset 的 Cancel 方法中止该查询。
一旦 rdoResultset 得到第一行数据,StillExecuting 属性将设为 False,RemoteData 控件将列数据传送到每一个需要数据的被绑定控件。只要从该查询返回了数据行,rdoResultset 对象的 EOF 属性就会返回 False,并将 RowCount 属性设为一个非零值。如果 rdoResultset 没有返回数据,RemoteData 控件的行为将由 EOFAction 属性决定。例如,如果 EOFAction 设为 rdAddNew,RemoteData 控件的 Validation 事件将对当前行触发,然后自动执行 AddNew,随后将对新的数据行触发一个 Reposition 事件。
注意 确认每一个被绑定的控件的 DataField 属性都必须与 rdoResultset 返回的 rdoColumn 对象的 Name 属性相对应,或者是一个空串 ("")。否则将发生一个可以捕获的错误。
当使用 Image 或 PictureBox 控件绑定到 RemoteData Control (RDC) 中的包含图象的域,同时 RDC 使用批游标时 (CursorDriver=rdUseClientBatch),要注意 Image 或 PictureBox 控件不显示图象。若要正确地显示图象,或者将 RDC 的“选项”属性设为128(rdFetchLongColimns),或者使用另一个不同的游标。
用户可以通过鼠标来操纵 RemoteData 控件。他们可以通过单击控件逐行移动当前行指针,或者移动到 rdoResultset 的开头和结尾位置。RemoteData 控件不允许用户使用鼠标移出 rdoResultset 的两端。不能设置焦点到 RemoteData 控件。
编写有关重定位当前行指针的代码时,请记住以下几点: