var
p:TPoint;
dbg:TDBGridEh;
coord:TGridCoord;
begin
if cds1IsEmpty then exit;
dbg:=DBGridEh1;
p:=MouseCursorPos;
p:=dbgScreenToClient(p);
coord:=dbgMouseCoord(pX,pY);
if (coordX<1) or (coordY<1) then Exit;
end;
参考这段代码,其中coord的x,y表示行列坐标
procedure QueryData(AStoreName: stirng; AStartDate, AEndDate: TDateTime);
var
BStartDate, BEndDate: TDateTime;
begin
BStartDate := incyear(AStartDate, -1);
BEndDate := incyear(AEndDate, -1);
with AdoQuery1 do
begin
SqlClose;
SqlClear;
SqlAdd('select 类别名, 产品订价(本期), 销售金额(本期), ' +
' 产品订价(同期), 销售金额(同期) from ' +
' ((select 类别号, sum(产品订价) as 产品订价(本期), ' +
' sum(销售金额) as 销售金额(本期) from 销售信息表 ' +
' left join 店面信息表 on 店面号 = 店面编号 ' +
' where 店名 = AStoreName and ' +
' (销售日期 between AStartDate and AEndDate) group by 类别号)) tb1 ' +
' left join ' +
' (select 类别号, sum(产品订价) as 产品订价(本期), ' +
' sum(销售金额) as 销售金额(本期) from 销售信息表 ' +
' left join 店面信息表 on 店面号 = 店面编号 ' +
' where 店名 = AStoreName and ' +
' (销售日期 between BStartDate and BEndDate) group by 类别号)) tb2 ' +
' on tb1类别号 = tb2类别号) right join 商品类别信息表 ' +
' tb3 on tb1类别号 = tb3类别号')
SqlOpen;
end;
end;
导出到excel 你用dbgrideh
uses
DBGridEhImpExp
procedure ExportDataExcel;
var ExpClass:TDBGridEhExportClass;
Ext:String;
begin
if SaveDialog1Execute then
begin
ExpClass := TDBGridEhExportAsXLS;
SaveDBGridEhToExportFile(ExpClass,dbgrideh1,
SaveDialog1FileName,true);
end;
end;
兄弟用得着写吗?有现成的啊!
你在interface
uses 中引用 math 单元,然后调用MAX(A,B),其中有下面几种情况:
function Max(A,B: Integer): Integer;
function Max(A,B: Int64): Int64;
function Max(A,B: Single): Single;
function Max(A,B: Double): Double;
function Max(A,B: Extended): Extended;
举个例子(先在窗体上放置3个EDIT组件和一个BUTTON组件,在单击BUTTON按钮事件写代码),全部代码为:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,math, GridsEh, DBGridEh;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
DBGridEh1: TDBGridEh;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R dfm}
procedure TForm1Button1Click(Sender: TObject);
var m,A,B:integer;
begin
A:=strtoint(trim(edit1Text));
B:=strtoint(trim(edit2Text));
m:=max(A,B);//调用MATH单元的比较函数
edit3Text:=inttostr(m);//显示最大的一个数。
end;
end
TDBGrideh(Args[I]VObject)DataSourceDataSetfirst;//移动指针到数据集第一条
for iCount := 0 to TDBGrideh(Args[I]VObject)ColumnsCount - 1 do
SheetCells[1, iCount + 1] :=
TDBGrideh(Args[I]VObject)ColumnsItems[iCount]TitleCaption;//列标题导出,在EXCEL第一行
jCount := 1;//从EXCEL第二行开始写
while not TDBGrideh(Args[I]VObject)DataSourceDataSetEof do
begin//只要不到数据集文尾,就一直导出
for iCount := 0 to TDBGrideh(Args[I]VObject)ColumnsCount - 1 do
SheetCells[jCount + 1, iCount + 1] :=
TDBGrideh(Args[I]VObject)ColumnsItems[iCount]FieldAsString;//导完一行数据的所有列
Inc(jCount);//EXCEL下一个表格行
TDBGrideh(Args[I]VObject)DataSourceDataSetNext;//数据集指针向下移动一条记录
代码没有问题,是你的查询有问题,如果是多表联接,联接应该有问题。ACCESS的表联接一般不能超过二张表。请注意一下“实施参照完整性”设置窗口中的意思,你先用单表导出试试。如果单表导出无重复,那就肯定是查询有问题了
以上就是关于dbgrideh 单元格的位置全部的内容,包括:dbgrideh 单元格的位置、使用DELPHI7和ACCESS做个查询程序,要做多表查询,并可导出结果。以前没接触过。 求指教、用delphi语言写一个程序实现求两个数的最大值,程序名为E_max。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)