几个小问题,尽量让每个回答的人都有分

yaccor 2005-07-09 10:45:17
1.//在DBGridEh第一列的按钮事件触发Frm_ChooseText窗体
procedure TFrm_Note.DBGridEh1Columns0EditButtonClick(Sender: TObject;
var Handled: Boolean);
begin
Frm_ChooseText:=TFrm_ChooseText.Create(Self);
try
Frm_ChooseText.ShowModal;
finally
FreeAndNil(Frm_ChooseText);
end;
end;
问题:编译后,点按钮没反应。百思不得其解。
2.//查询性别为男的学生信息,用的是RaidoButton控件
with Qry_Stuedent do
begin
Close;
SQL.Clear;
SQL.Add('select * from T_Student where Sex like '男%'');
Open;
end;
问题:系统报错:lllegal character in input files:'男'($D6D0)
3.//在第一个问题的基础上,弹出窗体之前做个查询,DBGridEh第一列输入的值作为条件来查询
SQL.Add(select * from T_Table where Text='Form1_DBGridEh1.Columns[0].FieldName'');
这句是错的,正确的该怎么写?
...全文
97 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanlin2004 2005-07-11
  • 打赏
  • 举报
回复
在Delphi中'可用用作转义符,就像C#中的转义符\一样

所以自附串中的特殊符号前面要加个转义符': I'm Jack 在代码中要写成:strName := 'I''m Jack';
C#中类似,比如说路径:C:\folder在C#中要写成:strPath = "C:\\folder";或者:strPath = @"C:\folder";

不要把字符串中的'和表示字符串的在两端的'搞混淆了,内部的就是一个转义字符
wqrz04 2005-07-11
  • 打赏
  • 举报
回复
第3个问题不用那么麻烦
DBGrid和DBGridEh都是感知控件 只要在DBGrid里有选中项 就可以用adoquery1.FieldByName('name').Value代表DBGrid的第几项 然后直接用一个动态参数就可以了

比如 adoquery1.SQL.Add('select * from T_Table where Text=:xxx);
adoquery1.Parameters.ParamByName('xxx')=trim(adoquery1.FieldByName('name').Value);
adoquery1.open;
崔作非 2005-07-11
  • 打赏
  • 举报
回复
一个最简单的调用模式对话框的例子
form2:=TForm2.Create(self);
form2.ShowModal;
form2.Free;
form2是我用IDE创建的窗体,要在Project->Option->Forms里,把Form2的自动创建改成手动创建窗体。
然后在
implementation
uses unit2;
这里引用form2的单元文件即,unit2.pas
好了现在可以用上面代码了。
楼主可以参照我上述所说的,看看自已的代码哪里有问题,所有的模式窗体都应该这样创建。
崔作非 2005-07-11
  • 打赏
  • 举报
回复
try
Frm_ChooseText.ShowModal;
finally
FreeAndNil(Frm_ChooseText);
end;
没有反应这说明你的模式窗体显示调用有问题。因你你用try捕捉了Frm_ChooseText.ShowModal;发出来的异常,所以当错误发生时,不会有会任何反应。
你可以先把异常语句屏蔽掉,看看给出的错误信息是什么?
yaccor 2005-07-11
  • 打赏
  • 举报
回复
问题1是什么原因?后面2个问题都解决了,谢谢
yaccor 2005-07-11
  • 打赏
  • 举报
回复
问题解决了,结帖了,谢谢各位
bookshop 2005-07-11
  • 打赏
  • 举报
回复
是不是根本就没有触发到该事件啊,跟踪下看看
yaccor 2005-07-11
  • 打赏
  • 举报
回复
TO: fanyufanyu(反语)
我其他所有窗体都是这样打开的啊,都没有问题,为什么就这个有问题呢?
Frm_ChooseText:=TFrm_ChooseText.Create(Self);
try
Frm_ChooseText.ShowModal;
finally
FreeAndNil(Frm_ChooseText);
end;
上面这个窗体没反应,系统也没有提示任何语句异常啊

gwj278 2005-07-09
  • 打赏
  • 举报
回复

SQL.Add('select * from T_Table where Text='''+Form1_DBGridEh1.Columns[0].FieldName+'''');

SQL.Add('select * from T_Student where Sex like''男%''');
yaccor 2005-07-09
  • 打赏
  • 举报
回复
谢谢 maming2003(<只有想不到的,没有做不到的!同志们帮我想吧.!!!!!!!)
我总是搞不清楚什么时候用“,什么时候用‘,还有连接符号+,
有没有大哥解释一下具体用法
wtg476 2005-07-09
  • 打赏
  • 举报
回复
with Qry_Stuedent do
begin
Close;
SQL.Clear;
SQL.Add('select * from T_Student where Sex like ''男%''');
Open;
end;
-----------------------------------------
SQL.Add(select * from T_Table where Text=''Form1_DBGridEh1.Columns[0].FieldName''');
--------------------------------------------
可以用参数来做的呀。
----------------------------------------
SQL.Add(select * from T_Table where Text=:A);
paraments[0].value:=Form1_DBGridEh1.Columns[0].FieldName;

才子鸣 2005-07-09
  • 打赏
  • 举报
回复
SQL.Add(select * from T_Table where Text=")+Form1_DBGridEh1.Columns[0].FieldName+'"';


Frm_ChooseText.Show;


SQL.Add('select * from T_Student where Sex like "男%"');

在这里面要用的是双引号


829

社区成员

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

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