在使用checkbox时。我要把他表示的状态插入到数据库中或修改。
我先定义了(var m1:integer)作为变量使用如下代码:
procedure TForm3.CheckBox1Click(Sender: TObject);
begin
if checkbox1.Checked=true then
begin
m1:=1;
end
else
m1:=0;
end;
procedure TForm3.Button3Click(Sender: TObject);
var s:string;
begin
if ty=1 then
begin
s:='insert into jqjs (syzt) values (m1)';
dm1.ADO1.Execute(s);
end
else
begin
s:='update jqjs set syzt=m1 where bh='''+trim(edit1.Text)+'''';
dm1.ADO1.Execute(s);
end;
end;
可是运行的时候出错说不允许使用m1.只能使用常/变量或表达式。
怎么解决这个问题。希望大哥门帮忙指点一下。。
我先定义了(var m1:integer)作为变量使用如下代码:
procedure TForm3.CheckBox1Click(Sender: TObject);
begin
if checkbox1.Checked=true then
begin
m1:=1;
end
else
m1:=0;
end;
procedure TForm3.Button3Click(Sender: TObject);
var s:string;
begin
if ty=1 then
begin
s:='insert into jqjs (syzt) values (m1)';
dm1.ADO1.Execute(s);
end
else
begin
s:='update jqjs set syzt=m1 where bh='''+trim(edit1.Text)+'''';
dm1.ADO1.Execute(s);
end;
end;
可是运行的时候出错说不允许使用m1.只能使用常/变量或表达式。
怎么解决这个问题。希望大哥门帮忙指点一下。。
解决方案 »
- delphi listbox 一行处理完再根据随机时间处理下一行
- EmbeddedWB 如何不下载网页中的flash
- chart统计图形?
- 简单问题:键盘keydown事件中的key如何转化成字符窜
- Delphi开发电子秤方面的问题
- 求ado的一个组件!
- 如何设置richedit当前的光标到第一行(line0)?特急,up有分
- 那位知道动态创建多线程的方法,比如象flashget一样,用户指定几个线程下载就同时执行几个线程?
- 请问如何使用字符串作为分隔符?然后用ExactStrings
- ICS的HttpCli怎样设置超时? 如何得到它是否已莫名其妙的死了,以便用HttpCli1.Abort中断他?
- 调用Dll的问题
- 三层系统使用ADO的问题,望高手指点!
s:='insert into jqjs (syzt) values (' + m1 + ')';
s:='insert into jqjs (syzt) values (' + m1 + ')';
这样是不行的。
s:='insert into jqjs (syzt) values (' + IntToStr (m1) + ')';
我先定义了(var m1:integer)作为变量使用如下代码:
procedure TForm3.CheckBox1Click(Sender: TObject);
begin
if checkbox1.Checked=true then
begin
m1:=1;
end
else
m1:=0;
end;
procedure TForm3.Button3Click(Sender: TObject);
var s:string;
begin
if ty=1 then
begin
s:='insert into jqjs (syzt) values (m1)';
dm1.ADO1.Execute(s);
end
else
begin
s:='update jqjs set syzt=m1 where bh='''+trim(edit1.Text)+'''';
dm1.ADO1.Execute(s);
end;
end;
可是运行的时候出错说不允许使用m1.只能使用常/变量或表达式。
怎么解决这个问题。等待大哥们的指点。。
'test str1' + inttostr(m1) + 'test str2';
你可以在dm1.ADO1.Execute(s);之前把S显示出来看看,如
s:='update jqjs set syzt=m1 where bh='''+trim(edit1.Text)+'''';
showmessage(s);
dm1.ADO1.Execute(s);
确认你所生成的SQL语句是否正确。
procedure TForm3.CheckBox1Click(Sender: TObject);
begin
if checkbox1.Checked=true then
begin
m1:=1;
end
else
m1:=0;
end;
procedure TForm3.Button3Click(Sender: TObject);
var s:string;
begin
if ty=1 then
begin
s:='insert into jqjs (syzt) values (' + IntToStr(m1) + ')';
dm1.ADO1.Execute(s);
end
else
begin
s:='update jqjs set syzt=' + IntToStr(m1) + ' where bh='''+trim(edit1.Text)+'''';
dm1.ADO1.Execute(s);
end;
end;2. 你没给出的代码是否有错, 我们不得而知, 因为在procedure TForm3.CheckBox1Click(Sender: TObject);和procedure TForm3.Button3Click(Sender: TObject);中使用到的变量ml, 我们看不出是在哪里定义的, 在这两个procedure是否能使用到这个变量ml, 我们不得而知.
我定义m1位置如下
var
Form3: TForm3;
m1:integer;
implementation
uses
jfgl,_dm1;
{$R *.dfm}
再帮我看看那里有错啊
出错
。message'将截断字符窜或二进制数据'
错误在ty=1 时还是 ty<>1 时都有发生。
使用
s:='insert into jqjs (syzt) values ('+''''+IntToStr(m1)+''''+')'出错
提示;;;将varchar值'+inttostr(m1)+'转化为bit列时发生语法错误。。
小弟我是初学者。请大哥指点
给分吧!!!!!!!!
实在是太离谱了吧。这也对啊
begin
if checkbox1.Checked=true then
begin
m1:=1;
end
else
m1:=0;
end;
这个事件可以不用写的
SQL语句改成
s:='Insert into jqjs (syzt) values('+booltostr(checkbox1.checked)+')'试试
多半是你的数据库定义的字段大小或类型不匹配,你看看你数据库里的数据类型是什么和你传过去的值是否匹配!