应用程序用delphi做,用InterBase做后台数据库,应用程序和数据库在不同的电脑中。我现在是这样做的:
两台电脑网线直连。服务器端: 做服务器的机子IP设为192.168.0.11.ping 192.168.0.1,连接正常
  ping 192.168.0.2,连接正常
2.服务器上安装了InterBase7.0,生成数据库及表格。
3. 运行服务器代理ScktSrvr.exe,默认端口是211,使用TCP/IP连接方式。
4.服务器Remote Data Module中使用IBDatabase1,IBTable1,IBTransaction1,DatasetProvider1组件,设置如下:
 ibdatabase1.databasename:=在服务器机子的绝对路径\我的数据库;
 ibdatabase1.Connected:=true;
 ibdatabase1.DefaultTransaction:=ibTransaction1;
 ibTransaction1.DefaultDatabase:=ibdatabase1;
 ibtransaction1.Active:=true;
 ibtable1.database:=ibdatabase1;
 ibtable1.Transaction:=ibtransaction1;
 ibtable1.TableName:=我的数据表;
 ibtable1.Active:=true;
 datasetprovider1.DataSet:=ibtable1;
5.编译并运行。
以上没有出现问题。客户端:
1.客户端机子IP设为192.168.0.2
2.ping 192.168.0.1,连接正常
 ping 192.168.0.2,连接正常
3.程序中使用SocketConnection1,ClientDataSet1,DataSource1,DBGrid1组件
4.存在问题: 
SocketConnection1属性中Port设为211
 属性ServerGUID设为{9C512CCB-638F-4A02-B4EF-2E275C1612D9} 这是从Server_TLB.pas中数据模块类名后复制来的  
 属性Address设为192.168.0.1
 属性Host为空 
 属性ServerName下拉框中没内容,无法选择,不知为何。
 属性Connected为TRUE,连接成功。从服务器端运行的ScktSrvr.exe中能看到客户机连接到服务器。
这里把Host选为服务器计算机名称,也能Connectde为TRUE,但Address和Hose无法同时设置,设置一个时,另一个自动清空,不知为何。
5.到这里无法继续了:
ClientDataSet1属性RemoteServer设为SocketConnection1
  属性ProviderName下拉框是空的,无法选择,
  所以属性Active设为True时出现Error提示:ClientDataSet1: Missing data Provider or data packet. 
主要就是这个问题,选择不到ProviderName,就无法连接。
(服务器端和客户端都在同一台机子上时,ProviderName可正常选择服务器端定义的datasetprovider1.    但无论何时ServerName总是空的。)不知道是不是客户端或服务器端哪里没有设置好。这些都可能是那里的问题呀,还望各位耐心赐教,不胜感激。

解决方案 »

  1.   

    Delphi一起带来的数据库InterBase的服务器Local Server,
    在所有类似编程语言中是最具特色的。但在很多Delphi的参考资料中对这一点介绍较少,而
    它却是Delphi开发Client/Server程序最有用和最强大的工具。Delphi安装完毕后,会产生一
    个InterBase数据库类型的Local Server,有了它,可以编写Client/Server数据库程序,而无
    需一个真正的后台数据库服务器;Local Server虽然在本地计算机中运行,但它的确扮演了一
    个数据库服务器的角色,应用程序在Local Server上运行和在服务器上运行没有什么不一样
    ,这对于开发Client/Server数据库程序来说是很重要的,可以避免在运行着数据库的服务器
    上开发程序带来的危险性。同时,Local Server上的数据库管理更加简洁,可以加快应用程序
    的开发速度。下面简单介绍一下利用Local Server开发Client/Server程序的方法及适应性
    方面的问题,供大家参考。配置数据库
    为了在Local Server上开发数据库程序,首先必须在Local Server上安装数据库,让它模
    拟完成数据库服务器的各种服务,对你来说就像使用一个SQL Server或Oracle一样。方法如
    下:1.查看控制面板的ODBC设置程序,确保Data Source项里有InterBase(Borland InterBa
    se)这一项。然后在Delphi程序组里执行Server Manager程序,完成数据库的维护工作,其中
    有一项是用户安全管理。用菜单Tasks中的User Security命令创建新用户,生成用户名和密
    码,以备在创建新数据库时用。2.运行Delphi软件包中的Windows ISQL,执行CREATE DATABASE命令,生成一个新数据库
    ,假设命名为TEST,用户名和密码要和第一步中产生的用户内容一致,然后在SQL STATEMENT中
    打入"CREATE TABLE NEWTABLE(NAME CHAR(10),TELE-PHONE CHAR(14))"命令,用RUN执行,接
    着可以用INSERT INTO NEWTABLE命令插入几条试验记录为编程时调试用,再退出ISQL。3.在第2步完成以后,在C:\IBLOCAL\BIN目录下可以发现新生成的数据库文件TEST。接着
    运行Database Engine Configuration程序,在对Aliases的操作中,建立一个新的Alias,这个
    Alias的ALIAS TYPE是INTER-BASE,New Alias Name是TEST,将SERVER NAME改成"C:\IBLOCAL
    \BIN\TEST",其它参数内容可以按照需要进行修改,然后存盘退出。这一步也可以在Databas
    e Desktop中完成。编程
    现在可以编写Client/Server数据库的程序了。1.运行Delphi程序后,新建一个PROJECT,在Form1上放置Data Access构件Data Source1
    和Query1,以及Data Control构件DBGrid1和DBNavigatorl等。2.在Data Sourcel的DataSet属性中填Query1,在Query1的DatabaseName属性中填TEST或
    在属性的下拉框中选TEST,在Query1的SQL属性中键入SQL查询语句如SELECT* FROM NEWTAB
    LE。3.然后在DBGrid1和DBNavigatorl的DataSource属性中填DataSourcel,最后,将Query1的
    Active属性置为TRUE,这时会出现数据库注册对话窗,只要输入的用户名和密码无误,DBGrid
    1中将出现Query1查询的结果,也可以在运行时用Query1的OPEN方法来打开查询得到结果。如
    果将Query1的RequestLive属性设置为TRUE,则不但可以查询数据库,而且能对数据库进行插
    入、更新及删除等操作,根本不需要编写SQL语句。
    至此,一个最小而又完整的Client/Server数据库程序就完成了。只要作适当的修改,就
    可以编写各种实用的数据库应用程序。可移植性
    用Delphi开发Client/Server数据库,大家最关心的就是可移植性,而这一点,恰恰就是D
    elphi和InterBase的Local Server的优势。在Local Server上开发完一个数据库程序后,只
    要在控制面板中ODBC的SETUP中建立真正数据库服务器的驱动器,然后在Database Desktop中
    生成利用该驱动器的数据库别名,并对Query或Table的相应属性略作修改,就可以在服务器上
    运行了。这些改动仅仅花费几分钟时间而已,其他基本上不必改动。但要注意,各种不同的数
    据库服务器的SQL语言是有所不同的,如果你用的是标准的SQL语句而不用扩展功能,那么就没
    有什么问题,否则需要参考相应数据库服务器的SQL语法。
      

  2.   

    使用第三方控件 
    ZerosDbo
    Fibplus
    Remobject AnyDAC 都可以Delphi 自带的 TIBConnection 
    1、放置一个IBDatabase控件和一个IBTransaction控件(位于InterBase页);
    2、设置IBDatabase的相关属性
    设置DataBaseName属性(选择数据库文件——扩展名.GDB的)
    设置DefaultTransaction指向IBTransaction控件;
    设置Params属性的如下:
    user_name=sysdba
    password=masterkey
    设置LoginPrompt属性为False
    设置Connected属性为True;
    3、双击IBTransaction控件,选择“Read Committed;
    4、在窗体中放置TIBTable控件、TDataSource控件;
    5、设置TIBTable控件的相关属性
    设置Database属性指向IBDatabase1;
    设置TableName属性,选择相关的数据表;
    设置Active属性为True
    6、TDataSource控件的DataSet属性,指向TIBTable控件;
    7、在窗体中放置TDBNavigator控件和TDBGrid控件(位于Data Controls页)
    8、设置TDBNavigator控件的DataSource属性,指向TDataSource控件;
    9、设置TDBGrid控件的DataSource属性,指向TDataSource控件;
    10、点F9运行,即可进行正常的数据库操作了。 
      

  3.   

      kye_jufei 好像没有认证看我的问题。很少有人用Interbase吗?
      

  4.   

    你按照以上的方法試著修改一下吧估計現在使用interbase桌面數據庫的人很少,一般都用大型的企業版的database,如sql,mysql,oracle...
      

  5.   

    to kye_jufei:
     
    你说的方法我实现过了,那是单机可是实现,我想要的是从本机远程访问另一台服务器上的数据库,我存在的问题是无法连接远程服务器上的数据库,具体问题是TClientDataset组件的privderName属性是空的。
      

  6.   

    现在能连接到服务器端,但是无法访问远程数据模块,具体问题是TClientDataset组件的privderName属性是空的。谁能帮我看看
      

  7.   

    明白了,要在远程服务器端注册服务器相关DLL文件。结贴。
      

  8.   

    是要在服务器端和客户端都要注册应用服务器相关的DLL文件啊。