delphi xe7 datasnap 服务器端显示 [firedac][dapt]-402错误

g58521547 2021-04-25 05:41:37
做了一个datasnap 服务器和客户端, windows10+ xe7
服务器端 使用MYSQL+FDCONNECTION+FDQUERY+DSP
客户端使用sqlconnection+dspconnection+clientdataset+datasource+dbgrid显示。

服务端的fdconnection的connectionstring, fdquery的sql(select * from tbuser) 都按照默认设置的啊

问题是客户端的form创立显示时,显示 如题的402错误,什么the operation cannot be performed without assign the selectcommand.
客户端的clientdatase的commandtext是select * from tbuser, 反复检查了服务端和客户端
不知道什么原因。

求教高手知道。

...全文
395 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanqth 2021-04-26
  • 打赏
  • 举报
回复
引用 4 楼 g58521547 的回复:
终于发现错误是因为 在服务器端的tservermethodsunit中的TFDCONNECTION的afterconnect事件中的语句问题,我本来是要tfdconn连接以后,把窗体上所有的fdquery都open的(当然每个fdquer的sql语句都设置select语句的),源代码如下:
    fmmain.Memo1.Lines.Append('now aft fdconn:'+self.fdcon.ConnectionString);
{    for i := self.ComponentCount-1 downto 0 do
    begin
        if self.Components[i] is tfdquery then
        begin
        (self.Components[i] as tfdquery).Active:=true;
        fmmain.Memo1.Lines.Add(self.Components[i].Name+':'+(self.Components[i] as tfdquery).SQL.Text);
        end;
    end; }

    //servercontainer1.DSServer1.Start;
    //fmmain.Memo1.Lines.Add(self.fdcon.ConnectionString);
现在把active:=true语句屏蔽掉就没有这个问题。 现在问题是,在这个事件里要不要把所有的fdquery都open???
"要不要把所有的fdquery都open???",不是由代码来决定,是由你的业务需要来决定,当业务需要处理某个表的数据的时候才应该去OPEN,使用写成就应该CLOSE。不使用的时候通常是不需要提前去OPEN的。
g58521547 2021-04-26
  • 打赏
  • 举报
回复
终于发现错误是因为 在服务器端的tservermethodsunit中的TFDCONNECTION的afterconnect事件中的语句问题,我本来是要tfdconn连接以后,把窗体上所有的fdquery都open的(当然每个fdquer的sql语句都设置select语句的),源代码如下:
    fmmain.Memo1.Lines.Append('now aft fdconn:'+self.fdcon.ConnectionString);
{    for i := self.ComponentCount-1 downto 0 do
    begin
        if self.Components[i] is tfdquery then
        begin
        (self.Components[i] as tfdquery).Active:=true;
        fmmain.Memo1.Lines.Add(self.Components[i].Name+':'+(self.Components[i] as tfdquery).SQL.Text);
        end;
    end; }

    //servercontainer1.DSServer1.Start;
    //fmmain.Memo1.Lines.Add(self.fdcon.ConnectionString);
现在把active:=true语句屏蔽掉就没有这个问题。 现在问题是,在这个事件里要不要把所有的fdquery都open???
tanqth 2021-04-25
  • 打赏
  • 举报
回复
客户端clientdataset的DataSTableName设置为服务器对应的fdquery控件名。 设计时的clientdataset不要OPEN,在需要的时候再去打开。
g58521547 2021-04-25
  • 打赏
  • 举报
回复
确定不是mysql的驱动问题,不知道是不是fdconnection什么地方要设置?还是服务端的datamoduleunit里面要设置?
doloopcn 2021-04-25
  • 打赏
  • 举报
回复
好像是MYSQL的驱动有问题
服务器端用64位的,客户端记得也用64位
发帖
网络通信/分布式开发

1588

社区成员

Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
帖子事件
创建了帖子
2021-04-25 05:41
社区公告
暂无公告