已经把dataset和dbgrid之间关联起来了。现在要做个判断,若dbgrid里某行其中一列
为空,就不把这行保存到数据库中,代码要怎么写?用adodataset.fieldbyname('colummname').asstring可不可以得到dbgrid中某列的内容?若是多行呢?又要怎么解决?望各们前辈指点!

解决方案 »

  1.   

    if Button = nbPost then
           begin
             dm.SendCardSocket.Connected := false;
             dm.SendCardCltDst.Close;
             dm.SendCardSocket.Connected := true;
             for i := 0 to DBGrid1.SelectedField.DataSet.RecordCount-1 do
             begin
                   Ci.Unit_Name := DBGrid1.SelectedField.DataSet.Fields.Fields[0].AsString;
                   Ci.Unit_Code :=  DBGrid1.SelectedField.DataSet.Fields.Fields[1].AsString;
                   ci.Unit_Kind :=  DBGrid1.SelectedField.DataSet.Fields.Fields[2].AsString;
                   ci.Unit_Manager := DBGrid1.SelectedField.DataSet.Fields.Fields[3].AsString;
                   ci.Unit_Phone :=  DBGrid1.SelectedField.DataSet.Fields.Fields[4].AsString;
                   ci.Unit_Fax :=  DBGrid1.SelectedField.DataSet.Fields.Fields[5].AsString;
                   ci.Unit_Adrress :=  DBGrid1.SelectedField.DataSet.Fields.Fields[6].AsString;
                   ci.Unit_PostCode := DBGrid1.SelectedField.DataSet.Fields.Fields[7].AsString;
                   ci.Unit_Station :=  DBGrid1.SelectedField.DataSet.Fields.Fields[8].AsString;
                   dm.SendCardCltDst.CommandText :='UPDATE [cardmanager].[dbo].[saleunit] SET [sal_name]='+''''+ci.Unit_Name+''',[sal_class]='''+ci.Unit_Kind+''',[sal_chirman]='''+ci.Unit_Manager+''',[sal_phone]='''+ci.Unit_Phone+''',[sal_fax]='''+ci.Unit_Fax+''',[sal_address]= '''+ci.Unit_Adrress+''',[sal_postcode]='''+ci.Unit_PostCode+''',[sal_station]='''+ci.Unit_Station+'''WHERE([sal_code]='''+ci.Unit_Code+''')';
                   dm.SendCardCltDst.Execute;
                 //  DBGrid1.SelectedField.DataSet.Next;
             end;
             dm.SendCardSocket.Connected := false;
             dm.SendCardCltDst.Close;
           end;