怎么样在SQL里引用DELPHI控件值

hdhello 2003-08-18 09:31:40
我想将窗体中的文本框值用SQL语句添加记录,却发现没有成功。文本框内的值变成NULL值,具体语句
....
adoquery1.sql.clear;
adoquery1.sql.add('insert table1(t1,t2,t2) values(:edit1.text,:edit2.text,:edit3.text)')
adoquery1.execasql;
....
语句错在哪里?
...全文
40 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hdhello 2003-08-19
  • 打赏
  • 举报
回复
谁有我菜:你说的这种方法我试了,但VALUE只接受文本型变量,对于象数日型的不知该用什么参数?

吴七郎:很想向你请都中间那么多单引号是什么意思,能给我解释一下吗?
cow8063 2003-08-19
  • 打赏
  • 举报
回复

adoquery1.sql.add('insert table1(t1,t2,t2) values('''+edit1.text+''''+','''+edit2.text+''''+','''+edit3.text+''''+')')
kevin218 2003-08-19
  • 打赏
  • 举报
回复
直接用连接字符串的形式可以;使用宿主变量也可以,但是ado和bde的所用的有点区别,也是大同小异,你可以找出来的
XXSingle 2003-08-19
  • 打赏
  • 举报
回复
用ADOQuery1,必须先创建参数才能引用参数。
或许用dh9450(谁有我菜) 的方式
gselec 2003-08-19
  • 打赏
  • 举报
回复
用一个StoredProc传给他啊!
sy_315 2003-08-19
  • 打赏
  • 举报
回复
....
adoquery1.sql.clear;
adoquery1.sql.add('insert table1(t1,t2,t2) values(:aa,:bb,:cc)');
adoquery1.Parameters.....
adoquery1.sql.clear;
adoquery1.sql.add('insert table1(t1,t2,t2) values(:aa,:bb,:cc)');
adoquery1.Parameters.ParamByName('aa').asstring := edit1.text;
adoquery1.Parameters.ParamByName('bb').asstring := edit2.text;
adoquery1.Parameters.ParamByName('cc').asstring := edit3.text;
adoquery1.execasql;
....

不好意思,后面的也要修改
sy_315 2003-08-19
  • 打赏
  • 举报
回复
....
adoquery1.sql.clear;
adoquery1.sql.add('insert table1(t1,t2,t2) values(:aa,:bb,:cc)');
adoquery1.Parameters.fieldbyname('aa').asstring := edit1.text;
adoquery1.Parameters.fieldbyname('bb').asstring := edit2.text;
adoquery1.Parameters.fieldbyname('cc').asstring := edit3.text;
adoquery1.execasql;
....

只有bde里面才有params
cow8063 2003-08-19
  • 打赏
  • 举报
回复
回:在DELPHI中,加入一个单引号,用两个单引号代替
('''+edit1.text+''''+','''+edit2.text+''''+','''+edit3.text+''''+')')
如上面
('''+edit1.text,第一个单引号是与insert对应,后两个就表示一个单引号
''''+','''+edit2.text前面4个表示加入一个单引号,因为是字符,所以前后分别加了一个变成了4个,','''加一个,号,并且加一单引号

dh9450 2003-08-19
  • 打赏
  • 举报
回复
那么多的''''是 个写法 ''''在你的SQL。TEXT里面就是一个'你也可以写#19 (可能不是19 我忘了)
dh9450 2003-08-19
  • 打赏
  • 举报
回复
ADO一般是自己会转换类型的吧 要不用ASDATE? 看看?
dh9450 2003-08-18
  • 打赏
  • 举报
回复
ADOQuery1.Parameters.ParamByName('aa').Value:=edit1.text;
这样就可以了
dh9450 2003-08-18
  • 打赏
  • 举报
回复
ADOQUERY的赋值写法有点不一样 找找以前的贴 很多的
也可以直接写
....
adoquery1.sql.clear;
adoquery1.sql.add('insert table1(t1,t2,t2) values('+''''+edit1.text+''''+','+''''+edit2.text+''''+','+''''+edit3.text+''''+')');
adoquery1.execasql;
hdhello 2003-08-18
  • 打赏
  • 举报
回复
是不是ADOquery不支持params。它的参数列表中没有,但Tquery就有,那ADOQUERY应该用什么?
hdhello 2003-08-18
  • 打赏
  • 举报
回复
我试过了,不行,说params未定义
huojiehai 2003-08-18
  • 打赏
  • 举报
回复
....
adoquery1.sql.clear;
adoquery1.sql.add('insert table1(t1,t2,t2) values(:aa,:bb,:cc)');
adoquery1.params.fieldbyname('aa').asstring := edit1.text;
adoquery1.params.fieldbyname('bb').asstring := edit2.text;
adoquery1.params.fieldbyname('cc').asstring := edit3.text;
adoquery1.execasql;
....

2,495

社区成员

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

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