在用ADO连接Access数据库时(用的ODBC连接的),当执行类似的语句
ADOQuery.SQL.Text := 'insert into guest (name,sex) values (:gname,:gSex)';
ADOQuery.Parameters.ParamByName('gname').Value := Trim(GName.text);
ADOQuery.Parameters.ParamByName('gname').Value := Trim(gSex.Text);
AQOQuery.ExecSQL;
时,如果没有输入其中任何一项,就会出现错误??(有时又不能限制用户必须输入)
该怎么解决??请指点。能不能从连接上解决?
ADOQuery.SQL.Text := 'insert into guest (name,sex) values (:gname,:gSex)';
ADOQuery.Parameters.ParamByName('gname').Value := Trim(GName.text);
ADOQuery.Parameters.ParamByName('gname').Value := Trim(gSex.Text);
AQOQuery.ExecSQL;
时,如果没有输入其中任何一项,就会出现错误??(有时又不能限制用户必须输入)
该怎么解决??请指点。能不能从连接上解决?
ADOQuery.SQL.Text := 'insert into guest (name,sex) values (';
if trim(gname.text)<>'' then begin
ADOQuery.SQL.Text.add(':gname');
ADOQuery.Parameters.ParamByName('gname').Value := Trim(GName.text);
end;
if trim(gsex.text)<>'' then begin
ADOQuery.SQL.Text.add(',:gsex');
ADOQuery.Parameters.ParamByName('gname').Value := Trim(gSex.Text);
end;
ADOQuery.SQL.Text.add(')');
这部分就可以重复多次
AQOQuery.ExecSQL;这样可以解决空输入的问题.不过就是程序判断太复杂.这是没办法的拉
ADOQuery.SQL.Text := 'insert into guest (name,sex) values (:gname,:gSex)';
if GName.text = '' then
GName.text := ''''''//六个单引号
else
ADOQuery.Parameters.ParamByName('gname').Value := Trim(GName.text);
if gSex.text = '' then
gSex.text := ''''''
else
ADOQuery.Parameters.ParamByName('gname').Value := Trim(gSex.Text);
AQOQuery.ExecSQL;
sql := format('insert into guest (name,sex) values (%s,%s)',[Trim(GName.text),Trim(GSex.Text)];
adoquery.close;
adoquery.sql.clear;
adoquery.sql.add(sql);
adoquery.execsql;
数据库中,字段的属性栏里:“允许空字符串”一栏我用的是“是”,但是还是不行。
请说明白一点。谢谢。
ADOQuery.Parameters.ParamByName('gname').Value := Trim(gSex.Text);
哈哈,仔细看,才发现问题所在,原来是两个('gname').Value ???////
ADOQuery.Parameters.ParamByName//('gname').Value// := Trim(gSex.Text);
对不起,是发问题的时候打错了,
但是这样的问题是肯定困饶我的, 请帮忙。
大哥,这里只是我的发问题的时候搞错了,不是我的难题的关键。
换一个连接程序就搞定了。
SQLConnect.Provider := 'Microsoft.Jet.OLEDB.4.0';
ConnNStr := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID='+LocalUserName;
ConnNStr := ConnNStr + ';Jet OLEDB:Database Password='+Localuserpwd+
';Data Source='+GetAccessFileName;谢谢各位马上给分。