function TfrmCustReg.CustRegToDB:Boolean;
var
  CustOperDB :TCustOperDB;
  SqlCMD:string;
begin
   //顾客登记的信息写数据库
    CustOperDB :=  TCustOperDB.Create(glostrConnDB);
    with frmCustReg do
    SqlCMD := 'begin transaction '
               + 'insert into Con_001(CustNO,CustName,IdTypeNo,Certificate,CerDept,'
               + 'CerUnit,Country,Sres,Curmoneys,MacNO,MacIP) values('''
               + edtCustNO.Text + ''',''' + edtCustName.Text + ''','''
               + IntToStr(cbxIdTypeNo.ItemIndex) + ''',''' + edtCertificate.Text
               + ''',''' + edtCerDept.Text + ''',''' + edtCerUnit.Text + ''','''
               + cbxCountry.Text + ''',''' + meoDescr.Lines.Text +''',' + edtCurmoneys.Text
               + ',''' + edtMacNo.Text + ''',''' + edtMacIP.Text + ''');';    //同时填写上机消费记录
    SqlCMD := SqlCMD + 'insert into Con_003(CustNO,MacNO,MacIP,FeeStartTime) values('''
              + edtCustNO.Text + ''',''' + edtMacNo.Text + ''',''' + edtMacIP.Text + ''','''
              + FormatDateTime('yyyy-mm-dd hh:mm:ss',Now()) + ''');';    //同时登记押金记录
    SqlCMD := SqlCMD + 'insert into Con_004(CustNO,Deposit) values('''
              + edtCustNO.Text + ''',' +  edtCurmoneys.Text + '); commit ';    Result := CustOperDB.InsertRec(SqlCMD) = SUCCESS;
end;
==========
会写成存储过程吗?又不觉得太简单..
于是我写了一个类..给一个sql语句.......--
你们怎么做?

解决方案 »

  1.   

    你的代码太不清晰了!!!你可以使用Format函数清晰你的代码!!!原文:
    SqlCMD := SqlCMD + 'insert into Con_004(CustNO,Deposit) values('''
                  + edtCustNO.Text + ''',' +  edtCurmoneys.Text + '); commit ';
    修改后结果:
    SqlCMD := SqlCMD + Format( ' Insert Into Con_004( CustNO, Deposit ) Values( %s, %s ); Commit', [ QuotedStr( edtCustNO.Text ), QuotedStr( edtCurmoneys.Text ) ] );其实最好的解决方案就是你说的存储过程!!!存储过程非常好写,而且可以避免一些问题!!!比如你的代码中有Begin Transaction,但与之对应的其他事务处理语句在哪里呢???
      

  2.   

    1、写一个类方法,在单元中调用;
    2、写一个存储过程,速度快效率高!
    3、定义一个常量,用format来赋值。
      

  3.   

    哦...谢谢 Delphi_Li(Delphi Li),windwather() ..
    我一定改进...:)
      

  4.   

    這個stored procedure很簡單的阿要是不會的話看看sql聯機幫助就可以了
      

  5.   

    写存储过程是简单...
    但是因为要很多字段插入表中..还得写一大堆的参数...又嫌它烦人......to  Delphi_Li(Delphi Li):比如你的代码中有Begin Transaction,但与之对应的其他事务处理语句在哪里呢???
    =========
    我写的存储过程很少用到事务语句..请问一般还得注意哪些呢..?
      

  6.   

    写存储过程吧,就是create procedure
      

  7.   

    就是嫌写存储过程也麻烦的.....
    如果要insert20个字段..得有20个参数.....写它一堆..真是难看又烦人..:(