procedure TForm1.BitBtn1Click(Sender: TObject);
  var
    data,wc_destory:string;
    n:Integer;
begin
     data:= Edit35.Text+'-'+Edit36.Text+'-'+Edit37.Text;    if Memo1.Lines[1]<>'' then
      begin
      for n:=0  to Memo1.Lines.Count do
         begin
         wc_destory:=wc_destory+Memo1.Lines[n] ;
         end;
      end;
    n:=0;  if Edit1.Text='' then showmessage('请输入厕所位置!')
    else
  if Edit2.Text='' then showmessage('请输所在路段!')
     else
  if Edit3.Text='' then showmessage('请输入厕所编号!')
   else
try
    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('INERT INTO ly_db VALUES(Edit3.Text,Edit1.Text,Edit2.Text,Edit4.Text,Edit5.Text,ComboBox1.Text,Edit6.Text,Edit21.Text,data, Edit7.Text,Edit8.Text,Edit9.Text, wc_destory)');
    Query1.ExecSQL;
 except
   showmessage('数据输入错误!');
   n:=-1000 ;
   end; if n<>-1000 then
 if Edit1.Text<>''
 then
 begin
  showmessage('数据添加成功!');
  Edit1.Clear;
  Edit2.Clear;
  Edit3.Clear;
  Edit4.Clear;
  Edit5.Clear;
  Edit6.Clear;
  Edit7.Clear;
  Edit8.Clear;
   Edit9.Clear;
   Edit21.Clear;
   Edit35.Clear;
   Edit36.Clear;
   Edit37.Clear;
   ComboBox1.Clear;
   Memo1.Clear;end;
end;
end.

解决方案 »

  1.   

    'INERT INTO ly_db VALUES('''+Edit3.Text+''','''+Edit1.Text+''','''......
      

  2.   

    Query1.SQL.Add('INERT INTO ly_db VALUES(Edit3.Text,Edit1.Text,Edit2.Text,Edit4.Text,Edit5.Text,ComboBox1.Text,Edit6.Text,Edit21.Text,data, Edit7.Text,Edit8.Text,Edit9.Text, wc_destory)');肯定错啦
    变量要
    '''+edit1.text+'''
      

  3.   

    变量要
    '''+edit1.text+'''
      

  4.   

    Query1.Close;
        Query1.SQL.Clear;
        Query1.SQL.Add('INERT INTO ly_db VALUES('''+Edit3.Text+''','''+Edit1.Text+''','''+Edit2.Text+''','''+Edit4.Text+''','''+Edit5.Text+''','''+ComboBox1.Text+''','''+Edit6.Text+''','''+Edit21.Text+''','''+data+''', '''+Edit7.Text+''','''+Edit8.Text+''','''+Edit9.Text+''', '''+wc_destory+''')');改成这样还是不行啊
      

  5.   

    txtsql:string;
    txtsql:='INERT INTO ly_db VALUES('''+Edit3.Text+''','''+Edit1.Text+''','''+Edit2.Text+''','''+Edit4.Text+''','''+Edit5.Text+''','''+ComboBox1.Text+''','''+Edit6.Text+''','''+Edit21.Text+''','''+data+''', '''+Edit7.Text+''','''+Edit8.Text+''','''+Edit9.Text+''', '''+wc_destory+''')';
    query1.sql.add(txtsql);
    你试试这样
      

  6.   

    for n:=0  to Memo1.Lines.Count-1 do
    var
      txtsql:string;
      txtsql:='INERT INTO ly_db VALUES  ('''+Edit3.Text+''','''+Edit1.Text+''','''+Edit2.Text+''','''+Edit4.Text+''','''+Edit5.Text+''','''+ComboBox1.Text+''','''+Edit6.Text+''','''+Edit21.Text+''','''+data+''', '''+Edit7.Text+''','''+Edit8.Text+''','''+Edit9.Text+''', '''+wc_destory+''')';
    query1.sql.add(txtsql);
    query1.open;
      

  7.   

    日哦,你们对sql知多少?
    insert into tablename (col1,col2,col3) values('one','two','three')
      

  8.   

    为什么我改成这样还是不行啊
     query1.Edit;
      query1.Append;
      query1.FieldByName('pos').AsString:=trim(Edit1.Text);
       query1.FieldByName('road').AsString:=trim(Edit2.Text);
       query1.FieldByName('num').AsString:=trim(Edit3.Text);
       query1.FieldByName('admin').AsString:=trim(Edit4.Text);
       query1.FieldByName('phone').AsString:=trim(Edit5.Text);
       query1.FieldByName('business').AsString:=trim(Edit6.Text);
       query1.FieldByName('ad').AsString:=trim(Edit7.Text);
       query1.FieldByName('buy').AsString:=trim(Edit8.Text);
       query1.FieldByName('sell').AsString:=trim(Edit9.Text);
       query1.FieldByName('people').AsString:=trim(Edit21.Text);
       query1.FieldByName('sex').AsString:=trim(ComboBox1.Text);
       query1.Post;
       query1.Append;说我的dataset关闭了怎么会关了
      

  9.   

    1、query1.open;
    由于insert语句无法返回一个数据集所以要用query1.execute
    2、在adoquery进行edit append post 等等操作之前必须要先打开数据集!!!
    3、adoquery.edit是对当前的行进行编辑,所以不用先edit 再append
      

  10.   

    '''+edit1.text+'''
    表示是 STRING;
    ‘+EDIT.TEXT+’
    表示是  INTEGER;
      

  11.   

    改正-》
     
    Query1.Close;
        Query1.SQL.Clear;
        Query1.SQL.Text:='INERT INTO ly_db (pos,road,...sex) VALUES( '+ quotedstr(trim(Edit1.Text))+',' + quotedstr(trim(Edit2.Text))+ ','...quotedstr(trim(Edit2.Text)+')';
        Query1.ExecSQL;
    注意一个字段按顺序对应一个值
      

  12.   

    请问下那应该怎么改
    现在的语句是query1.Append;
      query1.FieldByName('pos').AsString:=trim(Edit1.Text);
       query1.FieldByName('road').AsString:=trim(Edit2.Text);
       query1.FieldByName('num').AsString:=trim(Edit3.Text);
       query1.FieldByName('admin').AsString:=trim(Edit4.Text);
       query1.FieldByName('phone').AsString:=trim(Edit5.Text);
       query1.FieldByName('business').AsString:=trim(Edit6.Text);
       query1.FieldByName('ad').AsString:=trim(Edit7.Text);
       query1.FieldByName('buy').AsString:=trim(Edit8.Text);
       query1.FieldByName('sell').AsString:=trim(Edit9.Text);
       query1.FieldByName('people').AsString:=trim(Edit21.Text);
       query1.FieldByName('sex').AsString:=trim(ComboBox1.Text);
       query1.FieldByName('time').AsString:='1999';
       query1.FieldByName('broken').AsString:='无';
     query1.Post;还是报错说database关闭呢如果在query1.Append;前面加query1.open就会报错说sql里面没有语句
    应该怎么改啊.
      

  13.   

    用'insert' 就需要query1.ExecSQL;
    如果用append的话,那么就需要在前面sql.add('select * from table where....');
                                       query1.open;/// query.action:=true;
       并且要表里有关键字哦,query1.append;query1.fieldbyname('').asstring;=...;post;这样就可以了
      

  14.   

    你的sql 语句有两个注意的地方:
    一就是字段是字符型的,要用“type”形式来告诉编译器这是一个字符型。如果type是变量,要用''''+type+'''',其实还是前后一个双引号。
    二是日期,你的data应该是要来输入日期吧。对于不同的数据库,有不同的日期格式。输入时要按照格式来输入,否则会出错