动态绑定表格的问题

wjfxyj 2009-12-27 08:45:24
我是初学DELPHI,用7.0版本
在一个表单上放一个DBGrid和一个命令按钮
ADO控件有两组,调用SQL SERVER 2000的存储过程,分别显示全部数据和查询数据,用手工分别设置
表格的DATASOURCE为jxdm或jxdmcx表格均能正常显示。我想用命令按钮动态绑定,就出错
请各位大侠看看,问题在哪里。


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls;

type
Tjxdm = class(TForm)
DBGrid1: TDBGrid;
ADOConnection1: TADOConnection;
jxdmQuery: TADOQuery;
jxdm: TDataSource;
jxdmcxQuery: TADOQuery;
jxdmcx: TDataSource;
cxbut: TButton;
procedure cxbutonclick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
jxdm: Tjxdm;

implementation

{$R *.dfm}

procedure Tjxdm.cxbutonclick(Sender: TObject);
begin
set DBGrid1.DataSource:=jxdmcx <----这句出错
end;

end.



出错信息如下:
[错误] Unit1.pas(34): Statement expected but 'SET' found
[致命错误] weixiu.dpr(5): Could not compile used unit 'Unit1.pas'
...全文
164 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
idecl 2009-12-28
  • 打赏
  • 举报
回复
太新了
dinoalex 2009-12-27
  • 打赏
  • 举报
回复
建议你还是先看看pascal的基础知识
dinoalex 2009-12-27
  • 打赏
  • 举报
回复
procedure Tjxdm.cxbutonclick(Sender: TObject);
begin
if cxbut.caption='查询' then
begin
DBGrid1.DataSource:=jxdmcx ;
cxbut.Caption:='全部';
end;
if cxbut.caption='全部' then
begin
DBGrid1.DataSource:=jxdm;
cxbut.Caption:='查询';
end;
end;
wjfxyj 2009-12-27
  • 打赏
  • 举报
回复
已经加了;还是出错
dinoalex 2009-12-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wjfxyj 的回复:]
没人吗???
[/Quote]

还是一样的加;

如果有多个执行语句,就要加;
wjfxyj 2009-12-27
  • 打赏
  • 举报
回复
没人吗???
wjfxyj 2009-12-27
  • 打赏
  • 举报
回复
编辑框问题解决了
今天再提最后一个问题就结贴
如何给Button.caption赋值
代码如下
procedure Tjxdm.cxbutonclick(Sender: TObject);
begin
if cxbut.caption='查询' then
DBGrid1.DataSource:=jxdmcx
cxbut.Caption:='全部'; <---出错
if cxbut.caption='全部' then
DBGrid1.DataSource:=jxdm
cxbut.Caption:='查询'; <---出错
end;
[错误] Unit1.pas(41): Missing operator or semicolon
idecl 2009-12-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wjfxyj 的回复:]
procedure Tjxdm.dbgrid1oncellclick(Column: TColumn);
begin
  edit1.text:= jxdmquery.FieldByName('jxdm').AsString
  edit2.text:= jxdmquery.FieldByName('jxnr').AsString
end;
只放一个编辑框能用,但放两个编辑框出错
[错误] Unit1.pas(47): Missing operator or semicolon
[/Quote]

  edit1.text:= jxdmquery.FieldByName('jxdm').AsString;
  edit2.text:= jxdmquery.FieldByName('jxnr').AsString;

加上";"
dinoalex 2009-12-27
  • 打赏
  • 举报
回复
edit1.text:= jxdmquery.FieldByName('jxdm').AsString; // <-- 加 ;号
edit2.text:= jxdmquery.FieldByName('jxnr').AsString; // 同上
wjfxyj 2009-12-27
  • 打赏
  • 举报
回复
procedure Tjxdm.dbgrid1oncellclick(Column: TColumn);
begin
edit1.text:= jxdmquery.FieldByName('jxdm').AsString
edit2.text:= jxdmquery.FieldByName('jxnr').AsString
end;
只放一个编辑框能用,但放两个编辑框出错
[错误] Unit1.pas(47): Missing operator or semicolon
dinoalex 2009-12-27
  • 打赏
  • 举报
回复
DBGrid的onCellClick事件

edit1.text:= adoquery1.FieldByName('字段名').AsString
wjfxyj 2009-12-27
  • 打赏
  • 举报
回复
去掉了SET可以用了
还有一个问题:
表单上再增加两个编辑框,单击表格,选中的行的值填入编辑框
varick_zhong 2009-12-27
  • 打赏
  • 举报
回复
是啊,为什么加上set啊,哪看来的?
dinoalex 2009-12-27
  • 打赏
  • 举报
回复
去掉 set 就行了

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧