delphi xe -芒果数据库(FDConnection,DataSource,FDMongoQuery,FDMongoDataSet)连接,查询(展示数据),这里有mongodb为例子
一、连接
1、FDConnection:创建一个临时连接定义
资料:http://www.cnblogs.com/zhenfei/p/4105515.html
连接芒果数据库:选则Mongo(芒果),服务器地址。

2、FDMongoQuery:与数据库、表关联,并与上面的Connection连接。
直接选择连接

代码连接

FDMongoQuery1.Close;
FDMongoQuery1.FieldDefs.Clear;
// Setup new connection
FDMongoQuery1.DatabaseName := EditDatabase.Text;
FDMongoQuery1.CollectionName := EditCollection.Text;
FDMongoQuery1.QMatch := EditMatch.Text;//查询条件
FDMongoQuery1.QSort := EditSort.Text;//排序
FDMongoQuery1.QProject := EditProjection.Text;//显示字段(0不显示,1显示)
dsQuery.DataSet := FDMongoQuery1;
FDMongoQuery1.Open;
FDMongoQuery1.FieldDefs.Count;//最外层字段个数
FDMongoQuery1.FindField("grades") != NULL//找到某字段
FDMongoGQ_devch.QProject:='{"name":1}';//要显示的字段
FDMongoGQ_devch.QProject:='{"vdev.channels.2":0,"vdev.channels.32dplqsx":0}';//不要显示整个内嵌
FDMongoGQ_devch.FindField('_id').Visible:=False;//隐藏不需要显示的字段
例子:


procedure TFrm_0201_dev.ds_CHSDataChange(Sender: TObject; Field: TField);
var
sdev,sch,styep:string;
begin
if(dbgrd_ch.DataSource.DataSet.FieldByName('_id').Value<>null) then
begin
sdev:=dbgrd_ch.DataSource.DataSet.FieldByName('dev').Value;
sch:=dbgrd_ch.DataSource.DataSet.FieldByName('ch').Value;
styep:=dbgrd_dev.DataSource.DataSet.FieldByName('type').Value;
if(styep='VIRTUAL')then
begin
FDMongoGQ_devch.Close;
FDMongoGQ_devch.Query.Options.Explain := False;
FDMongoGQ_devch.FieldDefs.Clear;
FDMongoGQ_devch.QMatch:='{"dev":'''+sdev+'''}';
FDMongoGQ_devch.QProject:='{"vdev.channels.'+sch+'.inputs" :1,"vdev.channels.'+sch+'.unit":1}';
ds_devch.DataSet := FDMongoGQ_devch;
FDMongoGQ_devch.Open;
FDMongoGQ_devch.FindField('_id').Visible:=False;
FDMongoGQ_devch.FindField('vdev').Visible:=False;
FDMongoGQ_devch.FindField('vdev.channels').Visible:=False;
FDMongoGQ_devch.FindField('vdev.channels.'+sch+'').Visible:=False;
end;
end
else Exit;
end;
二、批量修改,最后统一保存
cachedUpdates :true;//试过可以
3、DataSource:数据源控件用于数据集控件和数据显示控件的链接作用,比如grid 等一些数据显示控件都有 datasource 属性。

4、将grid与datasource连接就可以了。
5、为空时:if(FDMongoGQ_phdev.IsEmpty and (FDMongoGQ_phdev.FieldDefList.Count = 1)) then exit;
二、查询
1、一个grid查询
procedure TFrm_0201_dev.Act_QueryExecute(Sender: TObject);
var
q:TMongoWireQuery;
d:IJSONDocument;
i:Integer;
begin
BuildQuery;
FDMongoQuery1.Open;
end;
procedure TFrm_0201_dev.BuildQuery;
var
scondition :string;
begin
if(Trim(edt_dev.Text)<>'') then
scondition:=' {"dev" :{$regex:'+''''+edt_dev.Text+''''+'}}'//正则表达式:进行模糊查询
FDMongoQuery1.Close;
FDMongoQuery1.Query.Options.Explain := False;
FDMongoQuery1.FieldDefs.Clear;
FDMongoQuery1.QMatch := scondition;
end;
2、两个grid联动
procedure TFrm_0201_dev.DataSourceDataChange(Sender: TObject; Field: TField);
var
DataSetField: TDataSetField;
begin
BuildQuery1;
FDMongoQuery2.Open;
if(FDMongoQuery2.FindField('tags') <>nil) then
begin
DataSetField :=FDMongoQuery2.FieldByName('tags') as TDataSetField;//这个是数据集,后面会讲到,用来展示数组
ds_tags.DataSet := DataSetField.NestedDataSet;
end;
end;
procedure TFrm_0201_dev.BuildQuery1;
var
scondition:string;
begin
sID:= DBGrid1.DataSource.DataSet.FieldByName('_id').Value ;
FDMongoQuery2.Close;
FDMongoQuery2.Query.Options.Explain := False;
FDMongoQuery2.FieldDefs.Clear;
FDMongoQuery2.QMatch:='{"dev":'''+sID+'''}';//查询条件
DataSource1.DataSet := FDMongoQuery2;
end;
3、芒果数据库里,数组的展示,用到TDataSetField
网上的图

自己的例子,如tags数组

procedure TFrm_0201_dev.DataSourceDataChange(Sender: TObject; Field: TField);
var
DataSetField: TDataSetField;
begin
BuildQuery1;
FDMongoQuery2.Open;
if(FDMongoQuery2.FindField('tags') <>nil) then
begin
DataSetField :=FDMongoQuery2.FieldByName('tags') as TDataSetField;
ds_tags.DataSet := DataSetField.NestedDataSet;
end;
end;
delphi xe -芒果数据库(FDConnection,DataSource,FDMongoQuery,FDMongoDataSet)连接,查询(展示数据),这里有mongodb为例子的更多相关文章
- DELPHI XE MYSQL数据库操作类 MYSQLHELPER
注: 无需odbc配置 {* * MySQL Helper v1.0 * 2015.6.19 * 说明: * 这是一个操作MySQL的类,该类必须和libmysql.dll,dbxmys.dll两个文 ...
- 三十二:数据库之SQLAlchemy.query函数可查询的数据和聚合函数
准备工作 from sqlalchemy import create_engine, Column, Integer, String, Floatfrom sqlalchemy.ext.declara ...
- Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决(对三层的例子配置有帮助)
Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLSto ...
- Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决
Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLSto ...
- Delphi XE 10 跨平台三层数据库应用教程
Delphi XE 10 跨平台三层数据库应用教程 前言: Delphi XE 开始越来越庞大,比经典的Delphi7难用,但依然是目前所有跨平台开发工具中开发效率最高.最容易上手的,其快速设计RAD ...
- delphi 2010与delphi XE破解版的冲突
在系统中同时安装了Dephi 2010LITE版与Delphi XE lite后,总是会有一个有问题 是因为两者都是读取C:\ProgramData\Embarcadero目录下的license文件, ...
- [转载]: delphi中XLSReadWrite控件的使用(2)---delphi XE下安装
一.下载 官方下载网址: http://www.axolot.com/components/download.htm 从这里可以下载到从Delphi5到DelphiXE全部支持的版本. 二.软件安装 ...
- delphi XE Berlin ReadProcessMemory WriteProcessMemory
delphi XE,Berlin [dcc32 Error] Unit9.pas(93): E2033 Types of actual and formal var parameters must ...
- FastReport for delphi xe 安装步骤
FastReport for delphi xe 安装步骤 1.先关闭DELPHI:2.下载后解压到一个目录,比如:D:FR:3.打开D:FR,运行recompile.exe ->点击" ...
随机推荐
- 怎样使用CSS3实现书页(书本)卷角效果
我们有时候想在页面显示一个公告或用户提示信息. 一个经常使用设计是使用书签形状. 我们能够给书签加入卷角效果.以使其更为逼真.所谓的"卷角"实际上能够用小角度倾斜的阴影效果来模拟. ...
- myeclipse的user library不自动部署到WEB-INF/lib目录下的解决办法
右键进入项目属性 Properties 点进去 左边 MyEclipse -> Deployment Assembly 右边 Add -> JavaBuild Path Entries - ...
- 点滴积累【SQL Server】---使用Kettle实时同步DB2数据到SQLserver
效果: 描述: 此操作适用于单点登录的同步用户. 首先,使用kettle将DB2数据同步到SQL中,然后添加到windows的任务计划中.定时执行同步数据. 特殊说明:此工具涉及到公司版权,所以不方便 ...
- C++语言基础(22)-转换构造函数和类型转换函数
一.转换构造函数 将其它类型转换为当前类类型需要借助转换构造函数(Conversion constructor).转换构造函数也是一种构造函数,它遵循构造函数的一般规则.转换构造函数只有一个参数. # ...
- C# MessageBox 消息对话框
在程序中,我们经常使用消息对话框给用户一定的信息提示,如在操作过程中遇到错误或程序异常,经常会使用这种方式给用于以提示.在C#中,MessageBox消息对话框位于System.Windows.For ...
- CSRF学习笔记之CSRF的攻击与防御以及审计【00x1 】
+++++++++++++++++++++++++++ + 00x1 实现简单的攻击 + 00x2 代码审计漏洞的源头 +++++++++++++++++++++++++++ 00x1 简单的csrf ...
- java对象实现深复制的方法
p2 = (Person)org.apache.commons.lang3.ObjectUtils.cloneBean(p); Person p2 = new Person(); p2 = (Pers ...
- PHP——菜单及内容轮换(Jquery)
效果: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...
- UVALive 3942 Remember the Word 字典树+dp
/** 题目:UVALive 3942 Remember the Word 链接:https://vjudge.net/problem/UVALive-3942 题意:给定一个字符串(长度最多3e5) ...
- Spring MVC第一课:用IDEA构建一个基于Spring MVC, Hibernate, My SQL的Maven项目
作为一个Spring MVC新手最基本的功夫就是学会如何使用开发工具创建一个完整的Spring MVC项目,本文站在一个新手的角度讲述如何一步一步创建一个基于Spring MVC, Hibernate ...