亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? readme.txt

?? Visual C++ 數 據 庫
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
DaoLib 1.0 - A complete solution for real world database development.


1 - Requirements - Getting started
2 - Introduction
3 - Core components
4 - Intermediate abstractions
5 - User interface components
6 - Tutorial and code samples
7 - Deployment
8 - Feedback - Support
9 - Reference



1 - Requirements - Getting started

	Unzip the DaoLib file maintaining the directory structure (-d). This
library requires Visual C++ 6.x installed on the development system. The 
evaluation version is fully functional, with a limit of 10 controls per 
dialog and an annoying reminder.



2 - Introduction

	The power of the DAO interface for dealing with databases is an
undeniable fact. It provides a fast and reliable mechanism for data management 
of Access and other ISAM and ODBC databases. Though it was engineered 
targeting scripting languages such as Visual Basic and VBA, it provides a dual 
interface, which allows straightforward C and C++ handling of its methods and 
properties.
	
	The C/C++ developer has several options:

	a) Deal with COM interfaces such as DAODatabase, DAORecordset and the 
like using the OS built-in OLE support. This could be tedious and error prone, 
since the developer has to deal with reference counting, object releasing and 
other COM annoying aspects.

	b) Go up one level through a C++ proxy. Microsoft provides such a 
proxy-wrapper in its DAO library. This library is rowset-oriented and provides 
a valuable variable binding mechanism, but it is not the best solution for 
handling record-oriented applications.

	c) Use some framework which integrates the database specifics with a 
user interface management. MFC-DAO is an example of this approach. The problem 
here is that the integration is best suited for a Doc/View architecture, and 
it adds some complexity when dealing with dialog intensive applications.

	DaoLib was built with this three-level separation of concerns. It deals 
with all the COM burden, such as exception handling, reference counting and 
object lifespan. It provides a wrapper level you can access directly, and it 
integrates to MFC with little overhead.



3 - Core components

	The classes at this level are wrapped around DAO components. In 
addition, we provide a handful of helper classes such as Bstr, Variant and 
Currency, which encapsulate the BSTR, VARIANT and CURRENCY semantics, allowing 
a very robust parameter handling. ErrorInfo manages error handling, converting 
COM error objects into C++ exceptions.

	The instantiation of Dao objects was simplified through smart 
constructors, many of which take no arguments or a single string object. The 
enumerator semantics is replaced by a simpler indexing mechanism. The use of 
the 'property' Microsoft extension allows a 'VB-like' syntax in many cases: 
using Variant indexes, you can refer to a specific field as:
	FieldValue[0] or as: FieldValue["CustomerID"]
In addition, the same property (if marked read/write) can be a left or right 
value.

	These are the core components and their mapping to DAO components:

	Field			DAOField
	Recordset		DAORecordset
	Database		DAODatabase
	Workspace		DAOWorkspace
	DBEngine		DAODBEngine
	Parameter		DAOParameter
	QueryDef		DAOQueryDef
	TableDef		DAOTableDef
	Index			DAOIndex
	User			DAOUser
	Group			DAOGroup
	Relation		DAORelation
	Connection		DAOConnection
	Property		DAOProperty

	These are the helper classes and their COM counterparts:

	Bstr			BSTR
	Variant			VARIANT
	Currency		CURRENCY

	These have no counterparts:
	
	ErrorInfo		Error handling through exception throwing.
	DaoBase			Base class for every Dao component. It manages
				reference counting and object releasing.



4 - Intermediate abstractions

	In order to connect database objects with user interface elements 
such as controls, windows or dialogs, a couple of intermediate level 
abstract classes must be added to the hierarchy. These are DaoWindow and 
DaoControl. A windowing user interface element must inherit from DaoWindow 
and a control element from DaoControl to have complete control of its 
underlying database objects. They interact tightly with MFC transfer 
mechanisms. 



5 - User interface components

	DaoLib comes with several user interface components, but its open 
architecture allows you to add your own custom components. The basic 
components are:

	Windowing components:
		
		DaoDialog
		DaoPropSheet
		DaoPropPage

	Control components:
		
		DaoEdit
		DaoCheck
		DaoRadio
		DaoGroup
		DaoCombo
		DaoListCtrl

	Complete components:
		
		ListDialog
		
	The windowing components are intended to be used as base classes of
your dialog objects. You can create regular dialogs or property pages using 
the ClassWizard and then replace the base class in the declaration and add
the constructor arguments. ClassWizard will still recognize your class and 
it even will use DaoDialog or DaoPropPage when adding base class references.

	The control classes can be used directly. Once again, you create 
control objects with ClassWizard and then replace their declaration (you can 
use the 'Replace' command if you have many controls). You can manage some 
attributes of the controls at declaration time, such as enabling or writing 
denial.

	DaoLib includes a powerful dialog-based component called ListDialog.
It manages the display of Recordset objects through a list control, naming 
each header column upon the field's name and formatting the data according 
to each data type. In addition, it provides complete printing support for the
list control's contents, sorting through column header clicking, keyboard 
support (Insert for adding records, Delete for deleting, Enter for viewing),
and a mouse driven context menu with those same functions.



6 - Tutorial and code samples

	The use of the library does not require any special skill. If you use
Visual C++ and feel comfortable with the ClassWizard, you can produce DaoLib 
code immediately. The steps to follow are:

	1 - You can create a project without database support, or use an 
existing project. Add DaoLib.lib to the libraries in the project settings 
(Link page). Map the include path accordingly (C/C++ - Preprocessor).


	2 - In your project's main file add a global DBEngine object:

// The one and only CMyApp object

CMyApp theApp;

becomes:

// The one and only CMyApp object

DBEngine dbeng;
CMyApp theApp;


	3 - In the declaration of your App class, add the core #include and a 
Database object:

#include "resource.h"       // main symbols

becomes:

#include "resource.h"       // main symbols
#include "bordao.h"

and: 

class CMyApp : public CWinApp
{
public:
 
becomes:

class CMyApp : public CWinApp
{
	Database db;
public:
 

	4 - In InitInstance, add the Database initialization:

	CMainFrame* pFrame = new CMainFrame;
	m_pMainWnd = pFrame;

becomes:

	try {
	  	db = "mydata.mdb";		//full path here, unless same
  		Recordset::pdbase = &db;	//directory as .EXE
	}
	catch(ErrorInfo& e) {
   		e.Show(0);
		e.Destroy();
		return FALSE;
	}

	CMainFrame* pFrame = new CMainFrame;
	m_pMainWnd = pFrame;


	5 - Create the appropiate dialog resource. Assign each control an ID
that resembles the name of the field with which it is associated. You can 
optionally add a Modify button (ID = 302). It must be the first in the 
control creation order. You may also add a Enter button (ID = 301). It must 
be non-visible, non-tabstop and marked as default button (unmark the OK 
button).


	6 - Open the ClassWizard and create the CDialog as usual. For each 
control, assign a member variable (Category: Control) of the required type. 
If you want to use the macros provided with DaoLib (recommended), give each 
control the exact name of the corresponding field, prefixed with 'm_' (for a 
field named CustomerID it should be m_CustomerID).
	

	7 - Close the ClassWizard and go to the dialog's class declaration 
(*.h file). Replace CDialog with CDaoDialog in the inheritance tag and add 
two parameters to the constructor before the existing one:

class CMyDialog : public CDialog
{
// Construction
public:
	CMyDialog(CWnd* Parent = NULL);

becomes:

class CMyDialog : public CDaoDialog
{
// Construction
public:
	CMyDialog(LPCSTR s = 0, bool a = 0, CWnd* Parent = NULL);
	

	8 - Replace the member control objects with the appropiate ones:

// Dialog Data
	//{{AFX_DATA(CMyDialog)
	enum { IDD = IDD_MYDIALOG };
	CEdit	m_CustomerID;
	CButton m_NewCustomer;

becomes:

// Dialog Data
	//{{AFX_DATA(CMyDialog)
	enum { IDD = IDD_MYDIALOG };
	CDaoEdit	m_CustomerID;
	CDaoCheck 	m_NewCustomer;
	

	9 - Go to the implementation file (*.cpp) and add the #includes you
need before the declaration file #include. In this case:

#include "stdafx.h"
#include "MyDialog.h"

becomes:

#include "stdafx.h"
#include "DaoDialog.h"
#include "DaoEdit.h"
#include "DaoCheck.h"
#include "MyDialog.h"


	10 - Modify the constructor accordingly.

CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/)
	: CDialog(CMyDialog::IDD, pParent)
{

becomes:

CMyDialog::CMyDialog(LPCSTR s, bool a, CWnd* pParent /*=NULL*/)
	: CDaoDialog(CMyDialog::IDD, pParent, s, a)
{


	11 - In the body of the constructor, add the initialization macros.

	//}}AFX_DATA_INIT
}

becomes:

	//}}AFX_DATA_INIT
	DAOCONTROL(CustomerID);
	DAOCONTROL(NewCustomer);
}


	12 - Replace CDialog in the message map macro with CDaoDialog

BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
	//{{AFX_MSG_MAP(CMyDialog)

becomes:

BEGIN_MESSAGE_MAP(CMyDialog, CDaoDialog)
	//{{AFX_MSG_MAP(CMyDialog)


	13 - That's it. Now you can construct an instance of your dialog and
execute it. This can be done from inside a menu response function:

	CString sql = "select * from Customers where CustomerID = 5477";
	try {
		CMyDialog Cust(sql);
		Cust.DoModal();
	}
	catch(ErrorInfo& e) {
		e.Show(*this);
		e.Destroy();
		return;
	}

or, for inserting a record:

	CString sql = "select * from Customers";
	try {
		CMyDialog Cust(sql, true);
		Cust.DoModal();
	}
	catch(ErrorInfo& e) {
		e.Show(*this);
		e.Destroy();
		return;
	}

or, if you want to use a ListCtrl:

	Recordset rs;
	try {
		rs = "select * from Customers";
	}
	catch(ErrorInfo& e) {
		e.Show(*this);
		e.Destroy();
		return;
	}
	CMyDialog Cust;
	CListDialog Lis(rs, &Cust);
	Lis.SetCaption("Listing of Customers");
	Lis.DoModal();

	Don't forget to #include the DaoLib specific headers in this file too, 
before the dialog declaration #include. If you use the ListCtrl component, you 
must add the corresponding resources from DaoLib.rc to your resource file.

#include "DaoDialog.h"
#include "DaoEdit.h"
#include "DaoCheck.h"
#include "MyDialog.h"
#include "ListDialog.h"	//if using ListDialog

	If you don't use all the functionality of DaoLib, the linker may issue
warnings about not referencing some libraries: this is the normal behavior. 
If you compile and link a Debug version, you can get some other warnings about
conflicting libraries. The non-evaluation version of DaoLib comes with a 
Debug static library and complete source code.


	14 - The procedure for a property sheet is very similar. Take a look
at the accompanying sample code.



7 - Deployment

	Programs built using DaoLib need no additional dlls. Of course DAO is
required. A DaoLib license allows unlimited deployment.



8 - Feedback - Support

	This is not a Beta release: we at ARGSOFT use this library since 1996 
(VC++ 4.2) for our custom products, and it only required some updating from 
time to time. We are aware that other developers may have quite different 
needs, so we will appreciate feedback. Please write to:
 
	feedback@argsoft.com

	ARGSOFT provides full support for the registered version. Evaluators
may ask for support, and in most cases they will get it. Please write to:

	support@argsoft.com



9 - Reference

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人三级伦理片| 国产精品1区二区.| 激情亚洲综合在线| 久久综合色综合88| 一区二区三区中文字幕| 国产精品一区二区x88av| 欧美日韩一区二区三区高清| 国产欧美一区二区精品性| 视频一区二区不卡| 色欧美片视频在线观看在线视频| 日韩精品影音先锋| 天堂va蜜桃一区二区三区漫画版| 成人动漫视频在线| 久久精品一区二区三区不卡牛牛| 亚洲18影院在线观看| 一本一道波多野结衣一区二区| 国产香蕉久久精品综合网| 久久成人免费网站| 91精品国产福利在线观看| 亚洲综合免费观看高清完整版在线 | 欧美一级高清大全免费观看| 一二三区精品视频| 91美女在线看| 亚洲日本乱码在线观看| 91亚洲国产成人精品一区二区三| 国产欧美精品一区二区色综合朱莉 | 亚洲精品中文在线观看| 成人av在线一区二区| 欧美经典一区二区三区| 国产福利一区二区三区视频在线| 精品88久久久久88久久久| 黄色日韩网站视频| 久久综合九色综合久久久精品综合| 26uuu亚洲| 亚洲尤物视频在线| 欧美亚洲国产怡红院影院| 亚洲欧美一区二区三区久本道91| 成人国产精品视频| 蜜臀91精品一区二区三区| 777亚洲妇女| 免费看欧美女人艹b| 精品国产免费视频| 国产高清不卡一区| 亚洲欧美色图小说| 欧美日韩精品一区二区三区四区| 日韩国产一二三区| 精品卡一卡二卡三卡四在线| 国产成人精品综合在线观看| 亚洲国产精品黑人久久久| 91在线一区二区| 亚洲福利视频一区| 精品国产露脸精彩对白 | 成人深夜福利app| 一区精品在线播放| 欧美日韩激情在线| 国内精品国产三级国产a久久| 久久久久久久免费视频了| 成人深夜在线观看| 亚洲bt欧美bt精品| 国产婷婷精品av在线| 91国产免费看| 国产一区二区在线免费观看| 亚洲欧美综合网| 日韩视频一区在线观看| 不卡的av网站| 日韩av在线播放中文字幕| 久久久综合精品| 欧美日韩国产小视频在线观看| 久久99这里只有精品| 亚洲精品成人在线| 精品国产伦一区二区三区免费| av成人老司机| 精品夜夜嗨av一区二区三区| 亚洲卡通欧美制服中文| 精品999久久久| 欧美在线观看一区二区| 国产一区二区导航在线播放| 亚洲一区视频在线| 国产精品第一页第二页第三页 | 在线视频欧美区| 国产高清不卡二三区| 午夜免费欧美电影| 国产精品成人午夜| 精品国产乱码久久久久久浪潮| 欧美熟乱第一页| 成人涩涩免费视频| 国产酒店精品激情| 青草国产精品久久久久久| 一区二区三区在线免费播放| 国产拍揄自揄精品视频麻豆| 日韩欧美综合一区| 欧美做爰猛烈大尺度电影无法无天| 国产精品1区2区3区在线观看| 日韩国产欧美在线观看| 夜夜嗨av一区二区三区中文字幕| 国产一区二区精品久久| 欧美久久久影院| 91色综合久久久久婷婷| 国产不卡在线一区| 国产毛片精品国产一区二区三区| 欧美一区二区三区人| 色综合久久88色综合天天| 成人免费观看av| 国产成人三级在线观看| 久久99国产精品久久99| 秋霞午夜鲁丝一区二区老狼| 一级中文字幕一区二区| 亚洲六月丁香色婷婷综合久久 | 免费人成在线不卡| 香蕉成人伊视频在线观看| 一区二区三区在线观看国产| 亚洲欧美一区二区三区极速播放| 国产精品久久久久久久久免费丝袜| 久久久国产精品麻豆 | 欧美大片免费久久精品三p| 欧美一区二区三区免费大片| 欧美一卡2卡三卡4卡5免费| 欧美精品久久久久久久多人混战| 欧美高清视频一二三区| 91精品国产麻豆国产自产在线| 欧美高清在线视频| 亚洲国产精华液网站w| 国产日韩亚洲欧美综合| 国产欧美精品一区aⅴ影院 | 日本成人在线电影网| 青椒成人免费视频| 国产一区二区在线免费观看| 国产精品一区二区在线播放 | 欧美一级生活片| 欧美大胆一级视频| 国产午夜一区二区三区| 亚洲素人一区二区| 午夜欧美在线一二页| 久久99国内精品| 丰满白嫩尤物一区二区| 一本一道久久a久久精品综合蜜臀| 欧美午夜精品理论片a级按摩| 欧美久久一二三四区| 久久老女人爱爱| 一区二区三区日韩欧美| 日本亚洲欧美天堂免费| 国产综合色视频| 色www精品视频在线观看| 日韩一区二区在线播放| 亚洲国产经典视频| 午夜精品福利在线| 国产.精品.日韩.另类.中文.在线.播放| 丁香网亚洲国际| 欧美日韩视频在线第一区| www国产成人免费观看视频 深夜成人网| 国产精品卡一卡二| 日本欧美大码aⅴ在线播放| 高清在线成人网| 欧美一级片免费看| 亚洲欧美在线视频| 久久国产尿小便嘘嘘| 91日韩精品一区| 久久久影视传媒| 婷婷开心激情综合| 成人app网站| 2021中文字幕一区亚洲| 亚洲制服欧美中文字幕中文字幕| 国产麻豆91精品| 欧美高清视频一二三区 | 亚洲精品久久嫩草网站秘色| 精品综合免费视频观看| 欧亚洲嫩模精品一区三区| 国产日韩精品久久久| 日本三级亚洲精品| 欧美色网站导航| 国产精品高潮呻吟| 国产精品一区二区久久精品爱涩| 欧美美女直播网站| 亚洲另类在线一区| 成人av资源在线观看| 亚洲精品一区二区在线观看| 日本一不卡视频| 欧美日韩精品一二三区| 亚洲免费观看高清| 成人av在线播放网址| 日韩欧美电影一区| 偷拍亚洲欧洲综合| 欧美日韩在线亚洲一区蜜芽| 亚洲免费在线视频| 99国产精品久久久久久久久久久| 久久伊人中文字幕| 久久99久久99| 欧美精品一区二| 狠狠色丁香久久婷婷综合_中| 日韩一区二区三区三四区视频在线观看 | 欧美三级中文字幕| 一区二区三区中文字幕精品精品| 99久久精品国产毛片| 欧美激情艳妇裸体舞| 国产福利一区二区三区视频 | 全国精品久久少妇| 91精品国模一区二区三区| 肉肉av福利一精品导航| 欧美一区二区观看视频| 另类欧美日韩国产在线|