在用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;
时,如果没有输入其中任何一项,就会出现错误??(有时又不能限制用户必须输入)
该怎么解决??请指点。能不能从连接上解决?

解决方案 »

  1.   

    想解决这种问题就得在程序上作工夫可以这样做
    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;这样可以解决空输入的问题.不过就是程序判断太复杂.这是没办法的拉
      

  2.   

    用这个办法看一下
    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;
      

  3.   

    我觉得这样的sql还是使用format好用得多
    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;
      

  4.   

    outer2000(天外流星) ,
    数据库中,字段的属性栏里:“允许空字符串”一栏我用的是“是”,但是还是不行。
    请说明白一点。谢谢。
      

  5.   

    GName.text := '""'//写一对双引号
      

  6.   

    ADOQuery.Parameters.ParamByName:= Trim(GName.text);
    ADOQuery.Parameters.ParamByName('gname').Value := Trim(gSex.Text);
    哈哈,仔细看,才发现问题所在,原来是两个('gname').Value ???////
      

  7.   

    ADOQuery.Parameters.ParamByName//('gname').Value// := Trim(GName.text);
    ADOQuery.Parameters.ParamByName//('gname').Value// := Trim(gSex.Text);
      

  8.   

    outer2000(天外流星) 
    对不起,是发问题的时候打错了,
    但是这样的问题是肯定困饶我的, 请帮忙。
      

  9.   

    outer2000(天外流星)
    大哥,这里只是我的发问题的时候搞错了,不是我的难题的关键。
      

  10.   

    晕。
    换一个连接程序就搞定了。
    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;谢谢各位马上给分。