當前位置:ag真人国际官网-ag旗舰厅官方网站 » 操作系統 » bcb資料庫

bcb資料庫-ag真人国际官网

發布時間: 2024-06-24 17:43:36

ⅰ 在bcb中怎樣執行access的資料庫壓縮與修復

#include "objbase.h" //牽涉到com對象,必須包含此頭文件

ansistring srcmdb="c:\\test.mdb"; //原文件名(壓縮之前)
ansistring destmdb="c:\\test2.mdb"; //目標文件名(壓縮之後)
coinitialize(null); //初始化com對象
ansistring src = "provider=microsoft.jet.oledb.4.0;data source=" srcmdb; //連接字串
ansistring dest = "provider=microsoft.jet.oledb.4.0;data source=" destmdb;
variant adoobj = variant::createobject("jro.jetengine");
adoobj.oleprocere("compactdatabase",src.c_str(),dest.c_str());
adoobj.clear();
couninitialize();
deletefile(srcmdb) ; //刪除原文件,如果不放心可以不刪除留個備份,但需要改名
renamefile(destmdb,srcmdb); //將壓縮後的文件改成原文件名

ⅱ c builder下資料庫報表master/detail關系


主從復合結構(master/detail)是基於"一對多"的關系,在一個資料庫表中提供詳細的信息,而這個表是通過另一個資料庫表的外來關鍵字訪問相關記錄的。基於主從復合結構,我們可以在瀏覽一個表中的數據時,同時給出另一個表中與這個記錄相關的所有記錄信息。borland c++builder提供了ttable 和tquery類型的資料庫控制項,可以方便地實現資料庫表的master/detail關系,本文即以bcb中自帶的示例資料庫bcdemos為例來說明如何採用不同方法實現數據表的主從復合結構關系,以數據瀏覽功能為例:即在瀏覽主數據表customer.db(客戶信息)記錄的同時,顯示從數據表orders.db(客戶定單信息)中與其相關的所有記錄的詳細信息。
ttable控制項相念指渣關的基本屬性簡介如下:databasename:設置要打開的資料庫別名或資料庫目錄路徑;tablename:設置所要關聯打開的資料庫表文件名;active:設置為true時資料庫表文件自動打開,否則需要用代碼在程序中打開數據表。tquery控制項的基本屬性:databasename:設置要打開仔悄的資料庫別名或資料庫目錄路徑;sql:tstring類型,所要執行的sql數據查詢語句,可以直接在對象觀察器(object inspector)中雙擊打開sql屬性進行編輯,active:設置為true時自動打開查詢資料庫表文件,否則需要用代碼在程序中打開查詢數據表。兩者與m/d相關的屬性將在下邊結合示例加以解釋。
一、ttable控制項關聯主、從表實現master/detail關系報表
master/detail關系最簡單的實現方法是用兩個ttable控制項分別與主表及從表關聯。分別起名為tablemaster和tabledetail,設置tablemaster的databasename為bcdemos,tablename為customer.db;設置tablemaster的databasename為bcdemos,tablename為orders.db.如此即可分別關聯上主從數據表。
因為要瀏覽顯示數據表記錄內容,所以需要在窗體逗槐上放置兩個tdbgrid類型的控制項dbgridmaster、dbgriddetail以顯示m/d關系主從表的相應記錄內容;放置兩個tdatasource類型的控制項datasourcemaster、datasourcedetail以指明數據源。設置datasourcemaster的dataset屬性為tablemaster,datasourcedetail的dataset屬性為tabledetail,分別指向主從數據表。設置dbgridmaster的datasource屬性為datasourcemaster,dbgriddetail的datasource屬性為datasourcedetail.
實現master/detail關系的關鍵在於從表關聯控制項tabledetail的mastersource屬性和masterfields屬性:前者指向了一個tdatasource控制項,該控制項dataset屬性應該指向master/detail關系的master表;後者則指定主表和從表的關聯欄位,需要雙擊打開"field link designer"對話框進行設置工作,選擇從表和主表的相應關聯欄位添加到"joined fields"(關聯欄位)中即可。本例中以主表(customer.db客戶信息)及從表(orders.db定單信息)的custno(客戶號)欄位為關聯欄位,故設置tabledetail的mastersource屬性為datasourcemaster,指向主表;masterfields屬性為custno關聯欄位。
如果tablemaster和tabledetail的active屬性為false,則需雙擊窗體form1空白處,添加以下兩句黑體字代碼到tform1::formcreate()事件句柄中去:
tablemaster-active = true;tabledetail-active = true;
運行程序,即可在dbgridmaster、dbgriddetail中瀏覽到master/detail關系主從表的相關數據記錄。
二、tquery控制項實現master/detail關系報表
tquery控制項和ttable控制項之間的主要差別在於tquery控制項通過sql屬性所賦的sql指令語句來動態訪問資料庫,ttable控制項則是靜態和數據表相關聯。tquery控制項可以同時對多個資料庫表進行關聯訪問,ttable控制項則只能關聯查詢單一的資料庫表。和ttable控制項相比,tquery控制項因為sql語言的靈活性和相對復雜性,更適合應用在多層、大型、網路資料庫系統中。
2.1、
ttable控制項關聯主表、tquery控制項關聯從表實現master/detail關系報表
窗體form1上刪去tabledetail控制項,放置tquery類型控制項querydetail,修改datasourcedetail的dataset屬性為querydetail,其餘控制項屬性不變。tquery控制項可以對訪問范圍設定限制條件,依此即可實現m/d關系的功能。設定querydetail的databasename為bcdemos,sql屬性為:"select orderno,custno,saledate,empno from orders where orders.custno=:custno".
即可取出從表中所有custno欄位與主表custno欄位相同的記錄集並且只顯示四個限定的欄位信息實現master/detail關系,另一關鍵在於從表關聯控制項querydetail的datasource屬性和params屬性:前者指向了一個tdatasource控制項,該控制項dataset屬性應該指明sql指令參數的數據來源;後者則設定sql指令中的參數,需要雙擊打開"querydetail parameters"對話框進行設置工作,選擇相應的sql指令中參數設置正確即可。本例中以主表(customer.db客戶信息)的custno(客戶號)欄位作為sql指令的參數,故設置querydetail的datasource屬性為datasourcemaster,指向主表;params屬性為custno關聯欄位作參數。
註:sql指令中參數名前一定要加冒號作為前綴,以加以區分。
添加以下兩句黑體字代碼到tform1::formcreate()事件句柄中去:
tablemaster-active = true;querydetail-active = true;
運行程序,即可在dbgridmaster、dbgriddetail中瀏覽到master/detail關系主從表的相關數據記錄,注意從表的柵格數據記錄只顯示有限定的四個欄位信息。
若querydetail的sql屬性為:"select*from orders where orders.custno = :custno",不限定從從表取出的欄位名。
2.2、tquery控制項關聯主、從表實現master/detail關系報表
master/detail關系更靈活的實現方法是主表及從表都與tquery控制項關聯,分別起名為querymaster和querydetail.設置querymaster和querydetail的databasename都為bcdemos;querymaster的sql屬性為:"select*from customer ",datasource和params屬性均為空,如此即可關聯上主數據表,得到和用tablemaster控制項一樣的效果;querydetail的其餘屬性和2.1中相同。相應的,分別改datasourcemaster和datasourcedetail的dataset屬性指向querymaster和querydetail.
註:由於tquery控制項是以動態方式訪問數據表的,故在只用tquery控制項關聯主從表時,設計時從表關聯控制項querydetail的active屬性必須設置為false,否則運行時bde會報告出錯信息。
添加以下兩句黑體字代碼到tform1::formcreate()事件句柄中去:
querymaster-active = true;querydetail-active = true;
運行程序,即可在dbgridmaster、dbgriddetail中瀏覽到與2.1相同效果的master/detail關系主從表相關記錄信息。
三、單表情況下tquery控制項實現master/detail關系匯總、分類報表
在流水作業系統或實時監控系統中,常常要求實時存儲當前記錄信息到單一的數據表文件中去,而事後再對其進行關系匯總、分類、入庫等工作。ttable控制項因為只能對單表進行操作,所以在這種單表情況下實現master/detail關系匯總、分類等功能的要求只能用tquery控制項實現。仍以orders.db(定單信息表)舉例說明如何靈活利用tquery控制項的sql指令屬性。
在窗體form1上放置tquery 控制項querymaster和querydetail,其它的控制項屬性不變。設置querymaster和querydetail的databasename都為bcdemos;querymaster的sql屬性為:
"select distinct custno, sum( itemstotal )itemstotalall,sum( freight ) freightall, sum( amountpaid ) amoutpaidall from orders group by custno order by
custno",datasource和params屬性均為空,產生m/d關系中的主表;querydetail的的sql屬性設為:"select orderno,custno,paymentmethod,itemstotal,taxrate,freight,amountpaid from orders where orders.custno = :custno",datasource屬性為datasourcemaster,指向主表;params屬性以custno關聯欄位作參數。相應的,datasourcemaster和datasourcedetail的dataset屬性分別指向querymaster和querydetail。
示常式序的sql指令實現了以下功能:以表中每個客戶的客戶號、定貨總值、貨運總費、付款總數為記錄的欄位,從定單信息表中提取出相應信息匯總作為主表;以表中每個定單記錄的定單號、客戶號、付款方式、提貨價值、稅率、運費、付款數為記錄的欄位,從定單信息表中提取相應的信息作為從表;主從表的關聯欄位custno(客戶號)通過sql指令的參數來傳遞。最終的結果即實現了在dbgridmaster控制項上顯示出每個客戶總的定貨信息,在dbgriddetail控制項上顯示出相應客戶的限定欄位的詳細定貨信息記錄的功能。
添加以下兩句黑體字代碼到tform1::formcreate()事件句柄中去:
querymaster-active
= true;querydetail-active =
true;
運行程序,即可在dbgridmaster、dbgriddetail中瀏覽到master/detail關系主從表相關記錄信息。
綜上所述,對於一般的master/detail關系應用,用ttable控制項就足以應付了,而要實現更進一步的功能,如多層m/d關系、遠程網路資料庫操作、多表互關聯類型、單表m/d關系的資料庫編程,則需要用到tquery控制項,利用sql指令的靈活性對資料庫進行操作。復雜功能的master/detail關系資料庫編程可在本文的基礎上參考相應的書籍以及bcb的聯機幫助實現。
本文程序在c++builder 3.0/ pwin95,c++builder 4.0/ pwin98下調試通過。

熱點內容
發布:2024-07-17 17:13:27 瀏覽:872
phpjava交互 發布:2024-07-17 16:58:57 瀏覽:356
resin下jsp不能正常編譯 發布:2024-07-17 16:34:44 瀏覽:229
sqlserver如何切換主備伺服器 發布:2024-07-17 16:23:02 瀏覽:299
mc18伺服器ip 發布:2024-07-17 16:23:02 瀏覽:379
仙境傳說手游腳本 發布:2024-07-17 16:09:24 瀏覽:691
matlab命令窗口和新建腳本 發布:2024-07-17 15:51:26 瀏覽:375
建ftp文件夾 發布:2024-07-17 15:51:26 瀏覽:955
魔獸撿物腳本 發布:2024-07-17 15:27:56 瀏覽:130
開發ip伺服器 發布:2024-07-17 15:24:42 瀏覽:388
网站地图