protected lID, lMode, lSelectMode, lOneRet: integer; sMasterTable, sDetailTable: string; bDrawFullGrid: boolean; procedure GridButtonClick(Sender: TObject; AbsoluteIndex: integer); procedure GridSelectPrice(Sender: TObject; AbsoluteIndex: integer); procedure SaveGirdWidth; procedure SetDrawGridSummary(dxGrid: TdxDBGrid); procedure GridDrawSummaryFooter(Sender: TObject; ACanvas: TCanvas; ARect: TRect; var AText: string; var AAlignment: TAlignment; AFont: TFont; var AColor: TColor; var ADone: boolean); end;implementationuses SysPublic;{$R *.DFM}procedure TfrmBaseBillEdit.GridButtonClick(Sender: TObject; AbsoluteIndex: integer); var sSql, sSelect, sPeiCi, sWareID, sUnitItem, sUnit2: string; lOrder: integer; ADOSet: TADODataSet; begin sSelect := BaseSelect(BASE_WARE_SELECT, 1, gridMain.EditingText,0, lSelectMode, lOneRet ); sWareID := GetCommaStr(sSelect, 1); if StrToInt2(sWareID) = 0 then begin gridMain.CancelEditor; gridMain.Repaint; gridMain.ShowEditor; Exit; end; if (ADOSetList.State <> dsEdit) and (ADOSetList.State <> dsInsert) then ADOSetList.Edit; ADOSetList.FieldByName('WareID').AsInteger := StrToInt2(sWareID); if ADOSetList.FindField('CounterID')<>nil then ADOSetList.FieldByName('CounterID').AsString := GetCommaStr(sSelect, 2); if ADOSetList.FindField('CounterCode')<>nil then ADOSetList.FieldByName('CounterCode').AsString := GetCommaStr(sSelect, 3); if ADOSetList.FindField('Counter')<>nil then ADOSetList.FieldByName('Counter').AsString := GetCommaStr(sSelect, 4); if (lMode=EXIST_CHECK_LIST) and (ADOSetList.FindField('OLDNUMBER')<>nil) then ADOSetList.FieldByName('OLDNUMBER').AsString := GetCommaStr(sSelect, 5) else ADOSetList.FieldByName('NUMBER').AsString := GetCommaStr(sSelect, 5); ADOSet := TADODataSet.Create(nil); sSql:='SELECT * FROM V_WARESELECT WHERE ID='+sWareID; if OpenDataSet(ADOSet, sSql) and (not ADOSet.IsEmpty) then begin ADOSetList.FieldByName('WareCode').AsString :=ADOSet.FieldByName('UserCode').AsString ; ADOSetList.FieldByName('WareName').AsString :=ADOSet.FieldByName('Name').AsString; if ADOSetList.FindField('SORT')<>nil then ADOSetList.FieldByName('SORT').AsString :=ADOSet.FieldByName('SORT').AsString; if ADOSetList.FindField('eusercode')<>nil then ADOSetList.FieldByName('eusercode').AsString :=ADOSet.FieldByName('eusercode'). AsString; if ADOSetList.FindField('TYPES')<>nil then ADOSetList.FieldByName('TYPES').AsString :=ADOSet.FieldByName('TYPES').AsString; if ADOSetList.FindField('SPEC')<>nil then ADOSetList.FieldByName('SPEC').AsString :=ADOSet.FieldByName('SPEC').AsString; if ADOSetList.FindField('CALCNAME')<>nil then ADOSetList.FieldByName('CALCNAME').AsString :=ADOSet.FieldByName('CALCNAME'). AsString; if ADOSetList.FindField('EUSER')<>nil then ADOSetList.FieldByName('EUSER').AsString :=ADOSet.FieldByName('EUSER').AsString; if ADOSetList.FindField('EMPORIUM')<>nil then ADOSetList.FieldByName('EMPORIUM').AsString :=ADOSet.FieldByName('EMPORIUM'). AsString; if ADOSetList.FindField('EMPORIUMCODE')<>nil then ADOSetList.FieldByName('EMPORIUMCODE').AsString :=ADOSet.FieldByName('EMPORIUMCODE' ).AsString; gridMain.ColumnByFieldName('WareUnit').ReadOnly := True; gridMain.ColumnByFieldName('WareUnit').Color := clInfoBk; if ADOSetList.FieldByName('Price').Value = NULL then begin if (lMode > STOCK_EDIT_BEGIN) and (lMode < STOCK_EDIT_END) then ADOSetList.FieldByName('Price').AsString :=ADOSet.FieldByName('Pos_purch'). AsString else if (lMode > SALE_EDIT_BEGIN) and (lMode < SALE_EDIT_END) then ADOSetList.FieldByName('Price').AsString :=ADOSet.FieldByName('Pos_Price'). AsString; end; end; if lSelectMode = 1 then begin sSql := 'SELECT Sum(Total)/(case Sum(Number) when 0 then 1 else Sum(Number) end) as ConstPrice FROM WareStock WS WHERE WS.WareID=' + sWareID; ADOSetList.FieldByName('ConstPrice').AsString := SqlToFieldValue(sSql, 'ConstPrice'); if (ADOSetList.FieldByName('Price').Value = NULL) and (lMode>=EXIST_EDIT_BEGIN) and ( lMode<=EXIST_EDIT_END) then begin ADOSetList.FieldByName('Price').AsString :=ADOSetList.FieldByName('ConstPrice'). AsString; end; end; if gridMain.FocusedColumn < gridMain.ColumnCount - 1 then gridMain.FocusedColumn := gridMain.FocusedColumn + 1; end;
procedure TfrmBaseBillEdit.GridSelectPrice(Sender: TObject; AbsoluteIndex: integer); var sP1, sP2, sSql, s0, s1, s2, s3, s4: string; lWareID, lIndex: integer; ADOSetTmp: TADODataSet; tsList: TStrings; sPrice: string; begin sP1 := ''; sP2 := ''; tsList := TStringList.Create; lWareID := ADOSetList.FieldByName('WareID').AsInteger; if lWareID <= 0 then Exit; sSql := 'Select * From Ware WHERE ID=' + IntToStr(lWareID); ADOSetTmp := TADODataSet.Create(nil); ADOSetTmp.LockType := ltReadOnly; OpenDataSet(ADOSetTmp, sSql); if not ADOSetTmp.IsEmpty then begin s0 := Trim(ADOSetTmp.FieldByName('Pos_Price').AsString); s1 := Trim(ADOSetTmp.FieldByName('Price1').AsString); s2 := Trim(ADOSetTmp.FieldByName('Price2').AsString); s3 := Trim(ADOSetTmp.FieldByName('Price3').AsString); s4 := Trim(ADOSetTmp.FieldByName('Price4').AsString); end; sP1 := '参考售价 :' + s0 + #13 + '预设售价1:' + s1 + #13 + '预设售价2:' + s2 + #13 + '预设售价3:' + s3 + #13 + '预设售价4:' + s4; sP2 := s0 + #13 + s1 + #13 + s2 + #13 + s3 + #13 + s4; tsList.Text := sP2; if ADOSetTmp.Active then ADOSetTmp.Close; ADOSetTmp.Free; lIndex := GetListBox('选择商品预设售价', sP1, 0, 'LISTBOX'); if (lIndex >= 0) and (lIndex <= tsList.Count) then begin sPrice := tsList.Strings[lIndex]; end; if sPrice <> '' then begin if (ADOSetList.State <> dsInsert) and (ADOSetList.State <> dsEdit) then ADOSetList.Edit; ADOSetList.FieldByName('Price').AsString := sPrice; end else begin gridMain.CancelEditor; gridMain.Repaint; gridMain.ShowEditor; end; end;procedure TfrmBaseBillEdit.SaveGirdWidth; var lCol: integer; sSql: string; ADOSetTmp: TADODataSet; begin ADOSetTmp := nil; lCol := 0; sSql := 'SELECT * FROM BillSetup WHERE MODE=' + IntToStr(lMode) + ' ORDER BY UserID'; ADOSetTmp := TADODataSet.Create(nil); OpenDataSet(ADOSetTmp, sSql); if not ADOSetTmp.IsEmpty then while not ADOSetTmp.EOF do begin ADOSetTmp.Edit; ADOSetTmp.FieldByName('Width').AsInteger := gridMain.Columns[lCol].Width; ADOSetTmp.Post; ADOSetTmp.Next; inc(lCol); end; ADOSetTmp.Close; ADOSetTmp.Free; end;procedure TfrmBaseBillEdit.bbExitClick(Sender: TObject); begin inherited; Close; end;procedure TfrmBaseBillEdit.pbbPrintClick(Sender: TObject); begin inherited; PrintForm(Self, 1, PRINT_REPORT, sPrintFile); end;procedure TfrmBaseBillEdit.pbbPrintViewClick(Sender: TObject); begin inherited; PrintForm(Self, 1, SHOW_REPORT, sPrintFile); end;procedure TfrmBaseBillEdit.pbbPrintCustomClick(Sender: TObject); begin inherited; PrintForm(Self, 1, DESIGN_REPORT, sPrintFile); end;procedure TfrmBaseBillEdit.pbbPrintInitClick(Sender: TObject); begin inherited; PrintForm(Self, 1, INITI_REPORT, sPrintFile); end;procedure TfrmBaseBillEdit.bbPrintClick(Sender: TObject); begin inherited; PrintForm(Self, 1, SHOW_REPORT, sPrintFile); end;procedure TfrmBaseBillEdit.gridMainKeyDown(Sender: TObject; var Key: word; Shift: TShiftState); begin inherited; case KEY of VK_RETURN: with gridMain do if FocusedColumn < VisibleColumnCount - 1 then FocusedColumn := FocusedColumn + 1 else if FocusedColumn = VisibleColumnCount - 1 then begin FocusedColumn := 0; if isEof or (DataLink.DataSet.RecNo = DataLink.DataSet.RecordCount) then DataLink.DataSet.Append else DataLink.DataSet.Next; gridMain.ShowEditor; end; end; end;procedure TfrmBaseBillEdit.FormKeyDown(Sender: TObject; var Key: word; Shift: TShiftState); begin inherited; case KEY of VK_RETURN: begin if GetFocusedComponent(self) is TdxInplaceEdit then Perform(WM_NEXTDLGCTL, 0, 0); end; VK_ESCAPE: Close; end; end;procedure TfrmBaseBillEdit.SetDrawGridSummary(dxGrid: TdxDBGrid); var i: integer; begin if edgoLoadAllRecords in dxGrid.OptionsDB then Exit; for i := 0 to dxGrid.ColumnCount - 1 do begin if dxGrid.Columns[i].SummaryFooterType <> cstNone then dxGrid.Columns[i].OnDrawSummaryFooter := GridDrawSummaryFooter; end; end;procedure TfrmBaseBillEdit.GridDrawSummaryFooter(Sender: TObject; ACanvas: TCanvas; ARect: TRect; var AText: string; var AAlignment: TAlignment; AFont: TFont; var AColor: TColor; var ADone: boolean); begin inherited; if not (edgoLoadAllRecords in TdxDBGrid(TdxDBTreeListColumn(Sender).ATreeList). OptionsDB) then begin if (uppercase(TdxDBTreeListColumn(Sender).FieldName) = 'TOTAL') and (ADOSetMaster.FieldByName('total').Value <> null) then begin AText := floattostr(ADOSetMaster.FieldByName('total').AsFloat); end else AText := CalcColumnSummary(TdxDBTreeListColumn(Sender)); TdxDBTreeListColumn(Sender).SummaryFooterFormat := AText; end; end;procedure TfrmBaseBillEdit.bbPrevClick(Sender: TObject); begin inherited; if ADOSetMaster.State = dsInsert then ADOSetMaster.Cancel; if ADOSetList.State = dsInsert then ADOSetList.Cancel; ADOSetMaster.Prior; lID := ADOSetMaster.FieldByName('ID').AsInteger; end;procedure TfrmBaseBillEdit.bbNextClick(Sender: TObject); begin inherited; if ADOSetMaster.State = dsInsert then ADOSetMaster.Cancel; if ADOSetList.State = dsInsert then ADOSetList.Cancel; ADOSetMaster.Next; lID := ADOSetMaster.FieldByName('ID').AsInteger; end;procedure TfrmBaseBillEdit.bbInsClick(Sender: TObject); begin inherited; bbSaveAdd.Click; end;procedure TfrmBaseBillEdit.bbDelClick(Sender: TObject); var sSQL: string; i: integer; begin inherited; if (not ADOSetMaster.IsEmpty) and (MsgBox('数据删除后不可恢复,确认要删除?', '提示', [mbOK,mbCancel]) = mrOk) then begin i := ADOSetMaster.FieldByName('ID').AsInteger; gridMain.DataLink.DataSet.DisableControls; gridMain.DataLink.DataSet.First; while not gridMain.DataLink.DataSet.EOF do gridMain.DataLink.DataSet.Delete; gridMain.DataLink.DataSet.EnableControls; ADOSetMaster.Delete; sSQL := 'DELETE FROM ' + sDetailTable + ' WHERE INDEXID=' + IntToStr(i); ExecSQL(sSQL); sSQL := 'DELETE FROM ' + sMasterTable + ' WHERE ID=' + IntToStr(i); ExecSQL(sSQL); end; end;procedure TfrmBaseBillEdit.bbEditClick(Sender: TObject); begin inherited; gridMain.DataLink.DataSet.Edit; end;
procedure TfrmBaseBillEdit.gridMainMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer); var P: TPoint; begin inherited; GetCursorPos(P); if Button = mbRight then GridPopMenu.Popup(P.X, P.Y) else if (Button = mbLeft) and (gridMain.GetHitTestInfoAt(X, Y) = htNowhere) then bbInsertItem.Click; end;procedure TfrmBaseBillEdit.bbOkClick(Sender: TObject); begin inherited; bReturn := True; end;procedure TfrmBaseBillEdit.FormCreate(Sender: TObject); begin inherited; bReturn := False; bDrawFullGrid := StrToBool2(GetIniValue(frmData.ADOConnet, 'DrawFullGrid')); end;procedure TfrmBaseBillEdit.FormClose(Sender: TObject; var Action: TCloseAction); var strBillCode,strSQL:String;begin inherited; if ADOSetMaster.Active and (ADOSetMaster.RecordCount>0) then strBillCode:=ADOSetMaster.FieldByName('usercode').AsString; if ADOSetMaster.State = dsInsert then ADOSetMaster.Cancel; if ADOSetList.State = dsInsert then ADOSetList.Cancel; if (not bReturn) and (lID = 0) and (ADOSetList.RecordCount > 0) then if (MsgBox('你没有保存数据,确定要退出吗?', '提示', [mbOK,mbCancel]) <> mrOk) then begin Action := caNone; end else begin if (TRIM(strBillCode)<>'') and (lMode=STOCK_FORMAL_EDIT) then begin strSQL:='DELETE FROM WARE WHERE ISIN=3 AND IMPORTBILLCODE='''+strBillCode+''''; ExecSQL(strSQL); end; end; end;procedure TfrmBaseBillEdit.FormShow(Sender: TObject); begin inherited; //Application.MessageBox('FormShow','information'); SetPanelFocused(self, pnlBillTop); end;procedure TfrmBaseBillEdit.bbInsertItemClick(Sender: TObject); begin inherited; gridMain.DataLink.DataSet.Append; end;procedure TfrmBaseBillEdit.bbDelItemClick(Sender: TObject); var sSQL: string; begin inherited; if (not gridMain.DataLink.DataSet.IsEmpty) and (MsgBox('数据删除后不可恢复,确认要删除?', '提示', [mbOK,mbCancel]) = mrOk) then begin sSQL := 'DELETE FROM ' + sDetailTable + ' WHERE INDEXID=' + IntToStr(ADOSetMaster.FieldByName('ID').AsInteger) + ' AND ID=' + IntToStr(gridMain.DataLink.DataSet.FieldByName('ID').AsInteger); ExecSQL(sSQL); gridMain.DataLink.DataSet.Delete; end; end;procedure TfrmBaseBillEdit.bbSaveAddClick(Sender: TObject); begin inherited; bReturn := True; end;procedure TfrmBaseBillEdit.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer); var P: TPoint; begin inherited; GetCursorPos(P); if Button = mbRight then masterPopMenu.Popup(P.X, P.Y); end;procedure TfrmBaseBillEdit.gridMainEnter(Sender: TObject); begin inherited; with Screen.Imes do begin if IndexOf(HDLoginInfoRec.IMEName)>=0 then ActivateKeyboardLayout(HKL(Objects[IndexOf(HDLoginInfoRec.IMEName)]), KLF_ACTIVATE); end; end;end.
procedure TfrmBaseBillEdit.GridButtonClick(Sender: TObject; AbsoluteIndex: integer); var sSql, sSelect, sPeiCi, sWareID, sUnitItem, sUnit2: string; lOrder: integer; ADOSet: TADODataSet; begin sSelect := BaseSelect(BASE_WARE_SELECT, 1, gridMain.EditingText,0, lSelectMode, lOneRet ); sWareID := GetCommaStr(sSelect, 1); if StrToInt2(sWareID) = 0 then begin gridMain.CancelEditor; gridMain.Repaint; gridMain.ShowEditor; Exit; end;放一个memo在form上,后面加上 ADOSetList.open; for i:=0 to ADOSetList.fieldcount-1 do memo1.Lines.add(ADOSetList.fields[i].FieldName); 其他的数据集合同
就可以了
属性面板commandText的sql语句选择了那些字段
再看看吧
adodataset1.open; for i:=0 to adodataset1.fieldcount-1 do memo1.Lines.add(adodataset1.fields[i].FieldName);memo1里面的就是字段名称
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ComCtrls, DBData, ExtCtrls, dxCntner,
dxEditor, dxEdLib, dxDBELib, dxExEdtr, dxTL, dxDBCtrl, dxDBGrid, Mask,
ImgList, Db, dxDBEdtr, ADODB, dxBar, Variants, BaseForm, EditForm,
Menus, dxDBTLCl, dxGrClms;type
TfrmBaseBillEdit = class(TfrmBaseForm)
gridMain: TdxDBGrid;
Panel1: TPanel;
lblCaption: TLabel;
dsMaster: TDataSource;
dsList: TDataSource;
pnlBillTop: TPanel;
ADOSetMaster: TADODataSet;
ADOSetList: TADODataSet;
dxBarManager1: TdxBarManager;
bbPrev: TdxBarButton;
bbNext: TdxBarButton;
bbIns: TdxBarButton;
bbEdit: TdxBarButton;
bbDel: TdxBarButton;
bbSetup: TdxBarButton;
bbPrint: TdxBarButton;
PopupMenu1: TdxBarPopupMenu;
pbbPrint: TdxBarButton;
pbbPrintView: TdxBarButton;
pbbPrintCustom: TdxBarButton;
pbbPrintInit: TdxBarButton;
bbOk: TBitBtn;
bbExit: TBitBtn;
GridPopMenu: TdxBarPopupMenu;
bbCopy: TdxBarButton;
bbInsertItem: TdxBarButton;
bbDelItem: TdxBarButton;
masterPopMenu: TdxBarPopupMenu;
bbSaveAdd: TBitBtn;
bbAddItemBatch: TdxBarButton;
bbAuditing: TdxBarButton;
procedure bbExitClick(Sender: TObject);
procedure pbbPrintClick(Sender: TObject);
procedure pbbPrintViewClick(Sender: TObject);
procedure pbbPrintCustomClick(Sender: TObject);
procedure pbbPrintInitClick(Sender: TObject);
procedure bbPrintClick(Sender: TObject);
procedure gridMainKeyDown(Sender: TObject; var Key: word;
Shift: TShiftState);
procedure FormKeyDown(Sender: TObject; var Key: word;
Shift: TShiftState);
procedure bbPrevClick(Sender: TObject);
procedure bbNextClick(Sender: TObject);
procedure bbInsClick(Sender: TObject);
procedure bbDelClick(Sender: TObject);
procedure bbEditClick(Sender: TObject);
procedure gridMainMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: integer);
procedure bbOkClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure bbInsertItemClick(Sender: TObject);
procedure bbDelItemClick(Sender: TObject);
procedure bbSaveAddClick(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: integer);
procedure gridMainEnter(Sender: TObject);
private
public
bReturn: boolean;
protected
lID, lMode, lSelectMode, lOneRet: integer;
sMasterTable, sDetailTable: string;
bDrawFullGrid: boolean;
procedure GridButtonClick(Sender: TObject; AbsoluteIndex: integer);
procedure GridSelectPrice(Sender: TObject; AbsoluteIndex: integer);
procedure SaveGirdWidth;
procedure SetDrawGridSummary(dxGrid: TdxDBGrid);
procedure GridDrawSummaryFooter(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; var AText: string; var AAlignment: TAlignment; AFont: TFont;
var AColor: TColor; var ADone: boolean);
end;implementationuses SysPublic;{$R *.DFM}procedure TfrmBaseBillEdit.GridButtonClick(Sender: TObject; AbsoluteIndex: integer);
var
sSql, sSelect, sPeiCi, sWareID, sUnitItem, sUnit2: string;
lOrder: integer;
ADOSet: TADODataSet;
begin sSelect := BaseSelect(BASE_WARE_SELECT, 1, gridMain.EditingText,0, lSelectMode, lOneRet
);
sWareID := GetCommaStr(sSelect, 1);
if StrToInt2(sWareID) = 0 then
begin
gridMain.CancelEditor;
gridMain.Repaint;
gridMain.ShowEditor;
Exit;
end;
if (ADOSetList.State <> dsEdit) and (ADOSetList.State <> dsInsert) then
ADOSetList.Edit;
ADOSetList.FieldByName('WareID').AsInteger := StrToInt2(sWareID);
if ADOSetList.FindField('CounterID')<>nil then
ADOSetList.FieldByName('CounterID').AsString := GetCommaStr(sSelect, 2);
if ADOSetList.FindField('CounterCode')<>nil then
ADOSetList.FieldByName('CounterCode').AsString := GetCommaStr(sSelect, 3);
if ADOSetList.FindField('Counter')<>nil then
ADOSetList.FieldByName('Counter').AsString := GetCommaStr(sSelect, 4);
if (lMode=EXIST_CHECK_LIST) and (ADOSetList.FindField('OLDNUMBER')<>nil) then
ADOSetList.FieldByName('OLDNUMBER').AsString := GetCommaStr(sSelect, 5)
else
ADOSetList.FieldByName('NUMBER').AsString := GetCommaStr(sSelect, 5); ADOSet := TADODataSet.Create(nil);
sSql:='SELECT * FROM V_WARESELECT WHERE ID='+sWareID;
if OpenDataSet(ADOSet, sSql) and (not ADOSet.IsEmpty) then
begin
ADOSetList.FieldByName('WareCode').AsString :=ADOSet.FieldByName('UserCode').AsString
;
ADOSetList.FieldByName('WareName').AsString :=ADOSet.FieldByName('Name').AsString;
if ADOSetList.FindField('SORT')<>nil then
ADOSetList.FieldByName('SORT').AsString :=ADOSet.FieldByName('SORT').AsString;
if ADOSetList.FindField('eusercode')<>nil then
ADOSetList.FieldByName('eusercode').AsString :=ADOSet.FieldByName('eusercode').
AsString;
if ADOSetList.FindField('TYPES')<>nil then
ADOSetList.FieldByName('TYPES').AsString :=ADOSet.FieldByName('TYPES').AsString;
if ADOSetList.FindField('SPEC')<>nil then
ADOSetList.FieldByName('SPEC').AsString :=ADOSet.FieldByName('SPEC').AsString;
if ADOSetList.FindField('CALCNAME')<>nil then
ADOSetList.FieldByName('CALCNAME').AsString :=ADOSet.FieldByName('CALCNAME').
AsString;
if ADOSetList.FindField('EUSER')<>nil then
ADOSetList.FieldByName('EUSER').AsString :=ADOSet.FieldByName('EUSER').AsString;
if ADOSetList.FindField('EMPORIUM')<>nil then
ADOSetList.FieldByName('EMPORIUM').AsString :=ADOSet.FieldByName('EMPORIUM').
AsString;
if ADOSetList.FindField('EMPORIUMCODE')<>nil then
ADOSetList.FieldByName('EMPORIUMCODE').AsString :=ADOSet.FieldByName('EMPORIUMCODE'
).AsString; gridMain.ColumnByFieldName('WareUnit').ReadOnly := True;
gridMain.ColumnByFieldName('WareUnit').Color := clInfoBk; if ADOSetList.FieldByName('Price').Value = NULL then
begin
if (lMode > STOCK_EDIT_BEGIN) and (lMode < STOCK_EDIT_END) then
ADOSetList.FieldByName('Price').AsString :=ADOSet.FieldByName('Pos_purch').
AsString
else if (lMode > SALE_EDIT_BEGIN) and (lMode < SALE_EDIT_END) then
ADOSetList.FieldByName('Price').AsString :=ADOSet.FieldByName('Pos_Price').
AsString;
end;
end; if lSelectMode = 1 then
begin
sSql :=
'SELECT Sum(Total)/(case Sum(Number) when 0 then 1 else Sum(Number) end) as ConstPrice FROM WareStock WS WHERE WS.WareID='
+ sWareID;
ADOSetList.FieldByName('ConstPrice').AsString :=
SqlToFieldValue(sSql, 'ConstPrice');
if (ADOSetList.FieldByName('Price').Value = NULL) and (lMode>=EXIST_EDIT_BEGIN) and (
lMode<=EXIST_EDIT_END) then
begin
ADOSetList.FieldByName('Price').AsString :=ADOSetList.FieldByName('ConstPrice').
AsString;
end;
end; if gridMain.FocusedColumn < gridMain.ColumnCount - 1 then
gridMain.FocusedColumn := gridMain.FocusedColumn + 1;
end;
var
sP1, sP2, sSql, s0, s1, s2, s3, s4: string;
lWareID, lIndex: integer;
ADOSetTmp: TADODataSet;
tsList: TStrings;
sPrice: string;
begin
sP1 := '';
sP2 := '';
tsList := TStringList.Create;
lWareID := ADOSetList.FieldByName('WareID').AsInteger;
if lWareID <= 0 then Exit;
sSql := 'Select * From Ware WHERE ID=' + IntToStr(lWareID); ADOSetTmp := TADODataSet.Create(nil);
ADOSetTmp.LockType := ltReadOnly;
OpenDataSet(ADOSetTmp, sSql); if not ADOSetTmp.IsEmpty then
begin
s0 := Trim(ADOSetTmp.FieldByName('Pos_Price').AsString);
s1 := Trim(ADOSetTmp.FieldByName('Price1').AsString);
s2 := Trim(ADOSetTmp.FieldByName('Price2').AsString);
s3 := Trim(ADOSetTmp.FieldByName('Price3').AsString);
s4 := Trim(ADOSetTmp.FieldByName('Price4').AsString);
end;
sP1 := '参考售价 :' + s0 + #13 + '预设售价1:' + s1 + #13 +
'预设售价2:' + s2 + #13 +
'预设售价3:' + s3 + #13 + '预设售价4:' + s4;
sP2 := s0 + #13 + s1 + #13 + s2 + #13 + s3 + #13 + s4;
tsList.Text := sP2;
if ADOSetTmp.Active then
ADOSetTmp.Close;
ADOSetTmp.Free;
lIndex := GetListBox('选择商品预设售价', sP1, 0, 'LISTBOX');
if (lIndex >= 0) and (lIndex <= tsList.Count) then
begin
sPrice := tsList.Strings[lIndex];
end;
if sPrice <> '' then
begin
if (ADOSetList.State <> dsInsert) and (ADOSetList.State <> dsEdit) then
ADOSetList.Edit;
ADOSetList.FieldByName('Price').AsString := sPrice;
end
else
begin
gridMain.CancelEditor;
gridMain.Repaint;
gridMain.ShowEditor;
end;
end;procedure TfrmBaseBillEdit.SaveGirdWidth;
var
lCol: integer;
sSql: string;
ADOSetTmp: TADODataSet;
begin
ADOSetTmp := nil;
lCol := 0;
sSql := 'SELECT * FROM BillSetup WHERE MODE=' + IntToStr(lMode) + ' ORDER BY UserID'; ADOSetTmp := TADODataSet.Create(nil);
OpenDataSet(ADOSetTmp, sSql);
if not ADOSetTmp.IsEmpty then
while not ADOSetTmp.EOF do
begin
ADOSetTmp.Edit;
ADOSetTmp.FieldByName('Width').AsInteger := gridMain.Columns[lCol].Width;
ADOSetTmp.Post;
ADOSetTmp.Next;
inc(lCol);
end;
ADOSetTmp.Close;
ADOSetTmp.Free;
end;procedure TfrmBaseBillEdit.bbExitClick(Sender: TObject);
begin
inherited;
Close;
end;procedure TfrmBaseBillEdit.pbbPrintClick(Sender: TObject);
begin
inherited;
PrintForm(Self, 1, PRINT_REPORT, sPrintFile);
end;procedure TfrmBaseBillEdit.pbbPrintViewClick(Sender: TObject);
begin
inherited;
PrintForm(Self, 1, SHOW_REPORT, sPrintFile);
end;procedure TfrmBaseBillEdit.pbbPrintCustomClick(Sender: TObject);
begin
inherited;
PrintForm(Self, 1, DESIGN_REPORT, sPrintFile);
end;procedure TfrmBaseBillEdit.pbbPrintInitClick(Sender: TObject);
begin
inherited;
PrintForm(Self, 1, INITI_REPORT, sPrintFile);
end;procedure TfrmBaseBillEdit.bbPrintClick(Sender: TObject);
begin
inherited;
PrintForm(Self, 1, SHOW_REPORT, sPrintFile);
end;procedure TfrmBaseBillEdit.gridMainKeyDown(Sender: TObject; var Key: word;
Shift: TShiftState);
begin
inherited;
case KEY of
VK_RETURN:
with gridMain do
if FocusedColumn < VisibleColumnCount - 1 then
FocusedColumn := FocusedColumn + 1
else if FocusedColumn = VisibleColumnCount - 1 then
begin
FocusedColumn := 0;
if isEof or (DataLink.DataSet.RecNo = DataLink.DataSet.RecordCount) then
DataLink.DataSet.Append
else
DataLink.DataSet.Next;
gridMain.ShowEditor;
end;
end;
end;procedure TfrmBaseBillEdit.FormKeyDown(Sender: TObject; var Key: word;
Shift: TShiftState);
begin
inherited;
case KEY of
VK_RETURN:
begin
if GetFocusedComponent(self) is TdxInplaceEdit then
Perform(WM_NEXTDLGCTL, 0, 0);
end;
VK_ESCAPE: Close;
end;
end;procedure TfrmBaseBillEdit.SetDrawGridSummary(dxGrid: TdxDBGrid);
var
i: integer;
begin
if edgoLoadAllRecords in dxGrid.OptionsDB then Exit; for i := 0 to dxGrid.ColumnCount - 1 do
begin
if dxGrid.Columns[i].SummaryFooterType <> cstNone then
dxGrid.Columns[i].OnDrawSummaryFooter := GridDrawSummaryFooter;
end;
end;procedure TfrmBaseBillEdit.GridDrawSummaryFooter(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; var AText: string; var AAlignment: TAlignment;
AFont: TFont;
var AColor: TColor; var ADone: boolean);
begin
inherited;
if not (edgoLoadAllRecords in TdxDBGrid(TdxDBTreeListColumn(Sender).ATreeList).
OptionsDB) then
begin
if (uppercase(TdxDBTreeListColumn(Sender).FieldName) = 'TOTAL') and
(ADOSetMaster.FieldByName('total').Value <> null) then
begin
AText := floattostr(ADOSetMaster.FieldByName('total').AsFloat);
end
else
AText := CalcColumnSummary(TdxDBTreeListColumn(Sender));
TdxDBTreeListColumn(Sender).SummaryFooterFormat := AText;
end;
end;procedure TfrmBaseBillEdit.bbPrevClick(Sender: TObject);
begin
inherited;
if ADOSetMaster.State = dsInsert then
ADOSetMaster.Cancel;
if ADOSetList.State = dsInsert then
ADOSetList.Cancel;
ADOSetMaster.Prior;
lID := ADOSetMaster.FieldByName('ID').AsInteger;
end;procedure TfrmBaseBillEdit.bbNextClick(Sender: TObject);
begin
inherited;
if ADOSetMaster.State = dsInsert then
ADOSetMaster.Cancel;
if ADOSetList.State = dsInsert then
ADOSetList.Cancel;
ADOSetMaster.Next;
lID := ADOSetMaster.FieldByName('ID').AsInteger;
end;procedure TfrmBaseBillEdit.bbInsClick(Sender: TObject);
begin
inherited;
bbSaveAdd.Click;
end;procedure TfrmBaseBillEdit.bbDelClick(Sender: TObject);
var
sSQL: string;
i: integer;
begin
inherited;
if (not ADOSetMaster.IsEmpty) and (MsgBox('数据删除后不可恢复,确认要删除?',
'提示', [mbOK,mbCancel]) = mrOk) then
begin
i := ADOSetMaster.FieldByName('ID').AsInteger;
gridMain.DataLink.DataSet.DisableControls;
gridMain.DataLink.DataSet.First;
while not gridMain.DataLink.DataSet.EOF do
gridMain.DataLink.DataSet.Delete;
gridMain.DataLink.DataSet.EnableControls;
ADOSetMaster.Delete;
sSQL := 'DELETE FROM ' + sDetailTable + ' WHERE INDEXID=' + IntToStr(i);
ExecSQL(sSQL); sSQL := 'DELETE FROM ' + sMasterTable + ' WHERE ID=' + IntToStr(i);
ExecSQL(sSQL);
end;
end;procedure TfrmBaseBillEdit.bbEditClick(Sender: TObject);
begin
inherited;
gridMain.DataLink.DataSet.Edit;
end;
procedure TfrmBaseBillEdit.gridMainMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: integer);
var
P: TPoint;
begin
inherited;
GetCursorPos(P);
if Button = mbRight then GridPopMenu.Popup(P.X, P.Y)
else if (Button = mbLeft) and (gridMain.GetHitTestInfoAt(X, Y) = htNowhere) then
bbInsertItem.Click;
end;procedure TfrmBaseBillEdit.bbOkClick(Sender: TObject);
begin
inherited;
bReturn := True;
end;procedure TfrmBaseBillEdit.FormCreate(Sender: TObject);
begin
inherited;
bReturn := False;
bDrawFullGrid := StrToBool2(GetIniValue(frmData.ADOConnet, 'DrawFullGrid'));
end;procedure TfrmBaseBillEdit.FormClose(Sender: TObject;
var Action: TCloseAction);
var
strBillCode,strSQL:String;begin
inherited;
if ADOSetMaster.Active and (ADOSetMaster.RecordCount>0) then
strBillCode:=ADOSetMaster.FieldByName('usercode').AsString; if ADOSetMaster.State = dsInsert then
ADOSetMaster.Cancel;
if ADOSetList.State = dsInsert then
ADOSetList.Cancel;
if (not bReturn) and (lID = 0) and (ADOSetList.RecordCount > 0) then
if (MsgBox('你没有保存数据,确定要退出吗?', '提示', [mbOK,mbCancel]) <> mrOk) then
begin
Action := caNone;
end
else
begin
if (TRIM(strBillCode)<>'') and (lMode=STOCK_FORMAL_EDIT) then
begin
strSQL:='DELETE FROM WARE WHERE ISIN=3 AND IMPORTBILLCODE='''+strBillCode+'''';
ExecSQL(strSQL);
end;
end;
end;procedure TfrmBaseBillEdit.FormShow(Sender: TObject);
begin
inherited;
//Application.MessageBox('FormShow','information');
SetPanelFocused(self, pnlBillTop);
end;procedure TfrmBaseBillEdit.bbInsertItemClick(Sender: TObject);
begin
inherited;
gridMain.DataLink.DataSet.Append;
end;procedure TfrmBaseBillEdit.bbDelItemClick(Sender: TObject);
var
sSQL: string;
begin
inherited;
if (not gridMain.DataLink.DataSet.IsEmpty) and
(MsgBox('数据删除后不可恢复,确认要删除?', '提示', [mbOK,mbCancel]) = mrOk) then
begin
sSQL := 'DELETE FROM ' + sDetailTable + ' WHERE INDEXID=' +
IntToStr(ADOSetMaster.FieldByName('ID').AsInteger) + ' AND ID=' +
IntToStr(gridMain.DataLink.DataSet.FieldByName('ID').AsInteger);
ExecSQL(sSQL);
gridMain.DataLink.DataSet.Delete;
end;
end;procedure TfrmBaseBillEdit.bbSaveAddClick(Sender: TObject);
begin
inherited;
bReturn := True;
end;procedure TfrmBaseBillEdit.FormMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: integer);
var
P: TPoint;
begin
inherited;
GetCursorPos(P);
if Button = mbRight then masterPopMenu.Popup(P.X, P.Y);
end;procedure TfrmBaseBillEdit.gridMainEnter(Sender: TObject);
begin
inherited;
with Screen.Imes do
begin
if IndexOf(HDLoginInfoRec.IMEName)>=0 then
ActivateKeyboardLayout(HKL(Objects[IndexOf(HDLoginInfoRec.IMEName)]),
KLF_ACTIVATE);
end;
end;end.
var
sSql, sSelect, sPeiCi, sWareID, sUnitItem, sUnit2: string;
lOrder: integer;
ADOSet: TADODataSet;
begin sSelect := BaseSelect(BASE_WARE_SELECT, 1, gridMain.EditingText,0, lSelectMode, lOneRet
);
sWareID := GetCommaStr(sSelect, 1);
if StrToInt2(sWareID) = 0 then
begin
gridMain.CancelEditor;
gridMain.Repaint;
gridMain.ShowEditor;
Exit;
end;放一个memo在form上,后面加上
ADOSetList.open; for i:=0 to ADOSetList.fieldcount-1 do memo1.Lines.add(ADOSetList.fields[i].FieldName);
其他的数据集合同
ADOSetList.commandtext 或只找commandtext
他通过OpenDataSet 函数给 ADODataSet 赋 sql语句
这个窗体是从其他窗体继承下来的所以父窗体的东东都在这上面
父窗体上一定有与ADOSetList类似的数据集
找找看
那它肯定在其他单元被初始化过了.在其他单元可以用frmBaseBillEdit.ADOSetList的方式
调用该控件的.查找方法:
你在代码编辑框中按Ctrl+F,再在查找对话框中选find in files
窗体的继承
这个窗体是从其他窗体继承下来,那么父窗体的东东都继承下来了
父窗体里应该有类似ADOSetList的数据集
这里是我刚才仔细查看相关代码后发现的东西!