应该是死锁了,可是为什么啊,我是单机运行的啊

解决方案 »

  1.   

    String ss1;
                  int zt;
                  zt=0;
                  ss1="select * from 消费地点信息表 where 编号='"+ss.SubString(38,2).Trim()+"'";
                  Query3->Close();
                  Query3->SQL->Clear();
                  Query3->SQL->Add(ss1);
                  Query3->Open();
                  if (Query3->IsEmpty() ) zt=2;
                  if (zt==0)
                  {
                     if(Query3->FieldByName("地点")->AsString=="餐厅")
                     {
                        ss1="select * from deskinf where 编号='"+ss.SubString(1,7).Trim()+"'";
                        Query3->Close();
                        Query3->SQL->Clear();
                        Query3->SQL->Add(ss1);
                        Query3->Open();
                       if (Query3->FieldByName("桌号")->AsString==""  ) zt=3;
                     }
                  }
    /*              if (zt==0)
                  {
                     ss1="select * from menubase,menutype where 条码='"+ss.SubString(9,5).Trim()+"' and menubase.分类=menutype.编号 ";
                     Query3->Close();
                     Query3->SQL->Clear();
                     Query3->SQL->Add(ss1);
                     Query3->Open();
                     if (Query3->FieldByName("服务类打印")->AsInteger==1)
                     {
                        ss1="select * from servename where 编号='"+ss.SubString(41,4).Trim()+"'";
                        Query3->Close();
                        Query3->SQL->Clear();
                        Query3->SQL->Add(ss1);
                        Query3->Open();
                        if (Query3->IsEmpty() ) zt=1;
                     }
                  }
     */
                  if (zt==0)
                  {
                     sf=ss.SubString(46,8).Trim();
                     sdate=sdate1+" "+sf;
                     str="select * from menu where dcj='"+sdcj+"' and dctime='"+sdate+"'";
                     Query3->Close();
                     Query3->SQL->Clear();
                     Query3->SQL->Add(str);
                     Query3->Open();
                     if (Query3->IsEmpty() )
                     {
                        String ss1,zh;                    do {
                           ss=ch;
                           ss1="select * from menubase,menutype where 条码='"+ss.SubString(9,5).Trim()+"' and menubase.分类=menutype.编号 ";                       Query3->Close();
                           Query3->SQL->Clear();
                           Query3->SQL->Add(ss1);
                           Query3->Open();
                           if (Query3->FieldByName("服务类打印")->AsInteger==1)
                           {
                              ss1="select * from servename where 编号='"+ss.SubString(41,4).Trim()+"'";
                              Query3->Close();
                              Query3->SQL->Clear();
                              Query3->SQL->Add(ss1);
                              Query3->Open();
                              if (Query3->IsEmpty() )
                              {
                                zt=1;
                                break;
                              }  
                     }                       j=20,v="";
                           v=ss.SubString(j,12).Trim();
                           //********获得桌号********************************************
                           ss1="select 桌号 as zh from deskinf where 名称='"+ss.SubString(1,7).Trim() +"' ";
                           Query1->Close() ;
                           Query1->SQL->Clear() ;
                           Query1->SQL->Add(ss1);
                           Query1->Open()  ;
                           zh=Query1->FieldByName("zh")->AsString;
                           //******获得桌号结束****************************************
                           Query1->Close() ;
                           Query1->SQL->Clear() ;
                           if(ss.SubString(36,1).Trim()=="0")
                              s="insert into menu select (select zkh from zd,deskinf where zh+1=编号 and zt=0 and 名称='"+ss.SubString(1,7).Trim()+"'),"+IntToStr(i)+", 编号,单价,"+ss.SubString(15,4).Trim()+",单价*"+ss.SubString(15,4).Trim()+",'"+ss.SubString(41,4).Trim()+"','"+user+"',getdate(),0,null,0,0,0,0 ";
                           else
                              if(ss.SubString(36,1).Trim()=="1")
                                 s="insert into menu select (select zkh from zd,deskinf where zh+1=编号 and zt=0 and 名称='"+ss.SubString(1,7).Trim()+"'),"+IntToStr(i)+", 编号,单价,"+ss.SubString(15,4).Trim()+",单价*"+ss.SubString(15,4).Trim()+",'"+ss.SubString(41,4).Trim()+"','"+user+"',getdate(),0,null,0,0,0,3 ";
                              else
                                 s="insert into menu select (select zkh from zd,deskinf where zh+1=编号 and zt=0 and 名称='"+ss.SubString(1,7).Trim()+"'),"+IntToStr(i)+", 编号,单价,"+ss.SubString(15,4).Trim()+",单价*"+ss.SubString(15,4).Trim()+",'"+ss.SubString(41,4).Trim()+"','"+user+"',getdate(),0,null,0,0,0,4";
                           if(v.IsEmpty() )
                              s+=",null";
                           else
                              s+=",'"+v+"'";
                           if(t)
                              s+=",'"+ss.SubString(1,7).Trim()+"'+条码,'"+FormatFloat("00000",th.ToInt())+"' ,'"+sdcj+"','"+sdate+"','"+ss.SubString(38,2).Trim()+"','"+zh+"' from menubase where 条码='"+ss.SubString(9,5).Trim()+"'"  ;
                           else
                              s+=",'"+ss.SubString(1,7).Trim()+ss.SubString(9,5).Trim()+"',null ,'"+sdcj+"','"+sdate+"','"+ss.SubString(38,2).Trim()+"','"+zh+"' from menubase where 条码='"+ss.SubString(9,5).Trim()+"'",i++; // ;
                           Query1->SQL->Add(s);
                           Query1->ExecSQL() ;
                           String strss,dc,bh,mc,sl;
                           bh=ss.SubString(9,5);
                           strss="select * from menubase where 条码 ='"+bh+"'";
                           Query2->Close() ;
                           Query2->SQL->Clear() ;
                           Query2->SQL->Add(strss);
                           Query2->Open() ;
                           mc=Query2->FieldByName("菜名")->AsString;                        fgets(ch,55,fp);
                        } while(!feof(fp))  ;
                        if(zt==0)
                        {
                           fclose(fp);
                           Query2->Close() ;
                           Query2->SQL->Clear() ;
                           Query2->SQL->Add("select (select sum(je) from menu,zd,deskinf where zd.zkh=menu.zkh and zh+1=deskinf.编号 and zd.zt=0 and tc is null and 名称='"+AnsiString(ch).SubString(1,7).Trim()+"') as aa,((select sum(单价*tt) from (SELECT DISTINCT xdh, 单价, sl/ 数量 as tt FROM menu, zd, deskinf, menubase, taocai WHERE zd.zkh = menu.zkh AND zh + 1 = deskinf.编号 AND tc = 条码 AND 套菜号 = menubase.编号 AND 菜品号 = bh AND zt = 0 AND tc IS NOT NULL AND 名称='"+AnsiString(ch).SubString(1,7).Trim()+"') DERIVEDTBL)) as bb");
                           Query2->Open() ;
                           Query1->Close() ;
     最后的这个查询.