DM->Query1->Close();
   DM->Query1->SQL->Clear();
   DM->Query1->SQL->Add("delete from filetable where 文件名称=:a1 and 发文日期=:a2 and 文号=:a3 and 发文机关=:a4 and 扩展一=:a5 and 扩展二=:a6");
   DM->Query1->ParamByName("a1")->AsString=Edit1->Text;
   DM->Query1->ParamByName("a2")->AsString=Edit2->Text;
   DM->Query1->ParamByName("a3")->AsString=Edit3->Text;
   DM->Query1->ParamByName("a4")->AsString=Edit4->Text;
   DM->Query1->ParamByName("a5")->AsString=Edit5->Text;
   DM->Query1->ParamByName("a6")->AsString=Edit6->Text;
   DM->Query1->ExecSQL();

解决方案 »

  1.   

    语句应该是这样的。
    Add("delete from filetable where 文件名称=':a1' and 发文日期=':a2' and 文号=':a3' and 发文机关=':a4' and 扩展一=':a5' and 扩展二=':a6'");即你的语句中文本型的数据要用单引号括起来
      

  2.   

    DM->Query1->ParamByName("a1")->AsString=trim(Edit1->Text);
    用trim去空格试试!
      

  3.   

    肯定是你delete语句中的条件设置出现错误,没有匹配记录,你应该在ExecSQL前,检查一下你所要执行的语句,看看条件是不是你所要的。
      

  4.   

    To: CrazyFor(Fan) 变参数:a1不能加‘’,否则出错。
    To: zxdragon(zxdragon) 我的语句没有毛病,运行都好使,没有任何报警。
    To:pengdali(大力) 我的所有字段都是A型,我用了Trim效果还是一样。我现在将我的语句暂时改为下面的这样,想试一下条件是否正确。
    DM->Query1->Close();
       DM->Query1->SQL->Clear();
       DM->Query1->SQL->Add("select 文件名称 from filetable where 文件名称=:a1 and 发文日期=:a2 and 文号=:a3 and 发文机关=:a4 and 扩展一=:a5 and 扩展二=:a6");
       DM->Query1->ParamByName("a1")->AsString=Trim(Edit1->Text);
       DM->Query1->ParamByName("a2")->AsString=Trim(Edit2->Text);
       DM->Query1->ParamByName("a3")->AsString=Trim(Edit3->Text);
       DM->Query1->ParamByName("a4")->AsString=Trim(Edit4->Text);
       DM->Query1->ParamByName("a5")->AsString=Trim(Edit5->Text);
       DM->Query1->ParamByName("a6")->AsString=Trim(Edit6->Text);
       //DM->Query1->ExecSQL();
         DM->Query1->Open();
         ShowMessage(DM->Query1->FieldByName("文件名称")->AsString);结果输出的提示框为空。是我的条件错了吗?
    我对照过了,应该没问题呀!
    请指教!!!!
      

  5.   

    我发现,当某个记录的某个字段为空时,执行:
     delete from filetable where 文件名称=:a1 and 发文日期=:a2 and 文号=:a3 and 发文机关=:a4 and 扩展一=:a5 and 扩展二=:a6
    无法删除记录,而当这个记录中的所有字段都不空时才能被删除。比如:字段“发文日期”为空,即使Edit2中不填入东西,也不能把该记录删除掉。为什么?该怎么办呢??
      

  6.   

    当然了,字段“发文日期”为空时,
    查询Sql就变成:'delete from filetable where 文件名称=:a1 and 发文日期= and 文号=:a3 and 发文机关=:a4 and 扩展一=:a5 and 扩展二=:a6'
    明显这个语句是错误的。
    可以加isnull限定。
      

  7.   

    DM->Query1->Close();
       DM->Query1->SQL->Clear();
       DM->Query1->SQL->Add("select 文件名称 from filetable where 文件名称=:a1 and 发文日期=:a2 and 文号=:a3 and 发文机关=:a4 and 扩展一=:a5 and 扩展二=:a6");
       DM->Query1->ParamByName("a1")->AsString=Trim(Edit1->Text);
       DM->Query1->ParamByName("a2")->AsString=Trim(Edit2->Text);
       DM->Query1->ParamByName("a3")->AsString=Trim(Edit3->Text);
       DM->Query1->ParamByName("a4")->AsString=Trim(Edit4->Text);
       DM->Query1->ParamByName("a5")->AsString=Trim(Edit5->Text);
       DM->Query1->ParamByName("a6")->AsString=Trim(Edit6->Text);
         DM->Query1->Open();
        DM->Query1->Next();
         ShowMessage(DM->Query1->FieldByName("文件名称")->AsString);
      

  8.   

    1、
      把你的表字段设为不许空,加默认值为''
    2、
    if (Trim(Edit1->Text)="")
      变量1=null
    else
      变量1=Trim(Edit1->Text);
    .......
    DM->Query1->Close();
       DM->Query1->SQL->Clear();
       DM->Query1->SQL->Add("delete from filetable where 文件名称=:a1 and 发文日期=:a2 and 文号=:a3 and 发文机关=:a4 and 扩展一=:a5 and 扩展二=:a6");
       DM->Query1->ParamByName("a1")->AsString=变量1;
       DM->Query1->ParamByName("a2")->AsString=Edit2->Text;
       DM->Query1->ParamByName("a3")->AsString=Edit3->Text;
       DM->Query1->ParamByName("a4")->AsString=Edit4->Text;
       DM->Query1->ParamByName("a5")->AsString=Edit5->Text;
       DM->Query1->ParamByName("a6")->AsString=Edit6->Text;
       DM->Query1->ExecSQL();
      

  9.   

    谢谢,大力!
    我把默认值改成了NULL,然后在程序中作判断,将变量1=“NULL”,才好使了。
    直接写成变量1=null不好使。
    结帐了。