设计一个delphi小程序,实现access宏和查询功能
我在access里已经做好了宏和查询,想设计一个delphi小程序,界面上就2个按钮,一个按钮实现宏运行功能,另一个按钮实现查询功能,把结果显示在delphi界面中或是导...
我在access里已经做好了宏和查询,想设计一个delphi小程序,界面上就2个按钮,一个按钮实现宏运行功能,另一个按钮实现查询功能,把结果显示在delphi界面中或是导出excel都行
没人知道吗???? 展开
没人知道吗???? 展开
4个回答
展开全部
运行宏很简单,具体有些什么功能请参照Access的Visual Basic帮助文档,其中支持的对象在Delphi中都可以用OleVariant操作(就是IDispatch接口),但Delphi不会自动补齐。
参考下:
var
App: OleVariant;
begin
App := CreateOleObject('Access.Application');//这个对应Microsoft Access的Application对象
App.OpenCurrentDatabase('../XX.mdb', False, '密码');//打开数据库
App.Run('ProcName', Arg1, Arg2, ...);//执行宏
App.Quit;//退出
end;
以上的操作都可以参考Access的Visual Basic帮助文档,其中都明确的属性、方法即参数的用法。其中数组操作可能有些不同,某些场合(数组)可能直接使用Array[Index]的方式,某些场合(集合)需要使用Array.Item(Index)的方式。
做好的查询貌似可以用ADO的过程调用组件。实在不行的话直接在ADO执行查询语句。
通过OLE调用可以得到保存的查询
var
Data: OleVariant;
Queries: OleVariant;
Data := Application.CurrentData;
Queries := Data.AllQueries;
Queries就包含了所有查询,可以用Queries.Count获取个数,用Queries(0)获取第一个查询,用Queries('查询1')获取名字为“查询1”的查询对象。然后遍历Properties属性,看看有没有查询语句的值。
参考下:
var
App: OleVariant;
begin
App := CreateOleObject('Access.Application');//这个对应Microsoft Access的Application对象
App.OpenCurrentDatabase('../XX.mdb', False, '密码');//打开数据库
App.Run('ProcName', Arg1, Arg2, ...);//执行宏
App.Quit;//退出
end;
以上的操作都可以参考Access的Visual Basic帮助文档,其中都明确的属性、方法即参数的用法。其中数组操作可能有些不同,某些场合(数组)可能直接使用Array[Index]的方式,某些场合(集合)需要使用Array.Item(Index)的方式。
做好的查询貌似可以用ADO的过程调用组件。实在不行的话直接在ADO执行查询语句。
通过OLE调用可以得到保存的查询
var
Data: OleVariant;
Queries: OleVariant;
Data := Application.CurrentData;
Queries := Data.AllQueries;
Queries就包含了所有查询,可以用Queries.Count获取个数,用Queries(0)获取第一个查询,用Queries('查询1')获取名字为“查询1”的查询对象。然后遍历Properties属性,看看有没有查询语句的值。
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
展开全部
说实话, 这个真的不会.
Delphi 是 有 TAccessApplication 控件, 但没有帮助档, 从来没有用过.
也就是操作过 Excel 和 SqlServer.
Delphi 是 有 TAccessApplication 控件, 但没有帮助档, 从来没有用过.
也就是操作过 Excel 和 SqlServer.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
本人可以在机器没有安装office或wps的情况下把数据导出excel文件,但那是商业源码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我找呀找,没找到我自己写的源代码,可能不小心删了。
希望这些能帮到你!我也是根据别人代码改的。下面是我当时用到的(网上搜的)
首先在Uses处加上ComObjprocedure TForm1.Button1Click(Sender: TObject); var h,k:integer; Excelid: OleVariant; s: string;begin try Excelid := CreateOLEObject('Excel.Application'); except Application.MessageBox('Excel没有安装!', '提示信息', MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL); Exit; end; try ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select * from jj_department'); ADOQuery1.Open; k:=ADOQuery1.RecordCount; Excelid.Visible := True; Excelid.WorkBooks.Add; Excelid.worksheets[1].range['A1:c1'].Merge(True); Excelid.WorkSheets[1].Cells[1,1].Value :='部门编码表' ; Excelid.worksheets[1].Range['a1:a1'].HorizontalAlignment := $FFFFEFF4; Excelid.worksheets[1].Range['a1:a1'].VerticalAlignment := $FFFFEFF4; Excelid.WorkSheets[1].Cells[2,1].Value := '组别编号'; Excelid.WorkSheets[1].Cells[2,2].Value := '公司编号'; Excelid.WorkSheets[1].Cells[2,3].Value := '组别名称'; Excelid.worksheets[1].Range['A1:c1'].Font.Name := '宋体'; Excelid.worksheets[1].Range['A1:c1'].Font.Size := 9; Excelid.worksheets[1].range['A1:c2'].font.bold:=true; Excelid.worksheets[1].Range['A2:c2'].Font.Size := 9; Excelid.worksheets[1].Range['A2:c2'].HorizontalAlignment := $FFFFEFF4; Excelid.worksheets[1].Range['A2:c2'].VerticalAlignment := $FFFFEFF4; h:=3; ADOQuery1.First; while not ADOQuery1.Eof do begin Excelid.WorkSheets[1].Cells[h,1].Value := Adoquery1.FieldByName('Fdept_id').AsString; Excelid.WorkSheets[1].Cells[h,2].Value := Adoquery1.FieldByName('Ffdept_id').AsString; Excelid.WorkSheets[1].Cells[h,3].Value := Adoquery1.FieldByName('Fdept_name').AsString; Inc(h); Adoquery1.Next; end; s := 'A2:f'+ IntToStr(k+2); Excelid.worksheets[1].Range[s].Font.Name := '宋体'; Excelid.worksheets[1].Range[s].Font.size := 9; Excelid.worksheets[1].Range[s].Borders.LineStyle := 1; Excelid.Quit; except Application.MessageBox('导入数据出错!请检查文件的格式是否正确!', '提示信息', MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL); end; MessageBox(GetActiveWindow(), 'EXCEL数据导出成功!', '提示信息', MB_OK +MB_ICONWARNING);end;
希望这些能帮到你!我也是根据别人代码改的。下面是我当时用到的(网上搜的)
首先在Uses处加上ComObjprocedure TForm1.Button1Click(Sender: TObject); var h,k:integer; Excelid: OleVariant; s: string;begin try Excelid := CreateOLEObject('Excel.Application'); except Application.MessageBox('Excel没有安装!', '提示信息', MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL); Exit; end; try ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select * from jj_department'); ADOQuery1.Open; k:=ADOQuery1.RecordCount; Excelid.Visible := True; Excelid.WorkBooks.Add; Excelid.worksheets[1].range['A1:c1'].Merge(True); Excelid.WorkSheets[1].Cells[1,1].Value :='部门编码表' ; Excelid.worksheets[1].Range['a1:a1'].HorizontalAlignment := $FFFFEFF4; Excelid.worksheets[1].Range['a1:a1'].VerticalAlignment := $FFFFEFF4; Excelid.WorkSheets[1].Cells[2,1].Value := '组别编号'; Excelid.WorkSheets[1].Cells[2,2].Value := '公司编号'; Excelid.WorkSheets[1].Cells[2,3].Value := '组别名称'; Excelid.worksheets[1].Range['A1:c1'].Font.Name := '宋体'; Excelid.worksheets[1].Range['A1:c1'].Font.Size := 9; Excelid.worksheets[1].range['A1:c2'].font.bold:=true; Excelid.worksheets[1].Range['A2:c2'].Font.Size := 9; Excelid.worksheets[1].Range['A2:c2'].HorizontalAlignment := $FFFFEFF4; Excelid.worksheets[1].Range['A2:c2'].VerticalAlignment := $FFFFEFF4; h:=3; ADOQuery1.First; while not ADOQuery1.Eof do begin Excelid.WorkSheets[1].Cells[h,1].Value := Adoquery1.FieldByName('Fdept_id').AsString; Excelid.WorkSheets[1].Cells[h,2].Value := Adoquery1.FieldByName('Ffdept_id').AsString; Excelid.WorkSheets[1].Cells[h,3].Value := Adoquery1.FieldByName('Fdept_name').AsString; Inc(h); Adoquery1.Next; end; s := 'A2:f'+ IntToStr(k+2); Excelid.worksheets[1].Range[s].Font.Name := '宋体'; Excelid.worksheets[1].Range[s].Font.size := 9; Excelid.worksheets[1].Range[s].Borders.LineStyle := 1; Excelid.Quit; except Application.MessageBox('导入数据出错!请检查文件的格式是否正确!', '提示信息', MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL); end; MessageBox(GetActiveWindow(), 'EXCEL数据导出成功!', '提示信息', MB_OK +MB_ICONWARNING);end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询