260 likes | 541 Views
資料庫操作 2. Table 元件. 完全使用 Table (BDE 元件 ) 來操作資料庫 開啟 Open 與關閉 Close Bookmark 資料移動 新增、刪除、修改與查詢. Table 元件- 開啟與關閉. Table 設定: DatabaseName TableName Active ( 相當於 Table1->Open). 資料欄位顯示 Table1->FieldValues [“ 欄位名稱” ] ; Table1->FieldByName (“ 欄位名稱” ) -> 型別轉換;
E N D
Table元件 • 完全使用Table (BDE元件)來操作資料庫 • 開啟Open與關閉Close • Bookmark • 資料移動 • 新增、刪除、修改與查詢
Table元件-開啟與關閉 • Table設定: • DatabaseName • TableName • Active (相當於Table1->Open) • 資料欄位顯示 • Table1->FieldValues[“欄位名稱”]; • Table1->FieldByName(“欄位名稱”)->型別轉換; • Table1->Fields->Fields[索引]->型別轉換; 關閉資料庫 Table1->Close();
Table元件-資料錄的移動 Table1->First(); //首筆 Table1->Last(); //末筆 Table1->Next(); //下一筆 Table1->Prior(); //上一筆 Table1->MoveBy(n); //向下或上移動n筆 Table1->Bof; Table1->Eof; Table1->GetBookmark(); //取得書籤 Table1->GotoBookmark(); //移動致書籤處 Table1->FreeBookmark(); //釋放書籤 Ex17-3a, p.17-31
Table元件-新增、修改與刪除 Table1->Insert(); //新增 Table1->Delete(); //刪除 Table1->Append(); //附加新增 Table1->Edit(); //修改 Table1->Post(); //確定修改
Table元件-新增、修改與刪除2 Table1->Edit(); Table1->FieldValues["姓名"]="楊文德"; Table1->FieldValues["學號"]="D123456789"; Table1->FieldValues["性別"]=False; Table1->Post(); // 顯示 Table1->IndexFieldNames=“學號”; //資料庫內有設定索引的欄位 if (Table1->FindKey(new TVarRec("D123456789"),0)) { Label1->Caption=Table1->FieldValues["姓名"]; Label2->Caption=Table1->Fields->Fields[0]->AsString; }
Table元件-查詢 • 不用索引檔 • Table1->Locate(); • Table1->Loookup(); • 利用索引檔 • Table1->FindKey(); • Table1->SetKey(); • Table1->GotoKey();
Table元件-Locate查詢 //設定尋找方式 TLocateOptions searchoptions; searchoptions << loPartialKey; If (Table1->Locate(“姓名”,”楊文德”,searchoptions)) { Label1->Caption=Table1->FieldValues["姓名"]; Label2->Caption=Table1->Fields->Fields[0]->AsString; }
Table元件-Lookup查詢 Label1->Caption=Table1->Lookup("姓名","楊文德","姓名"); Label2->Caption=Table1->Lookup("姓名","楊文德","學號"); Locate 可以檢查沒有資料
TQuery元件 • BDE元件 • 可以下達SQL指令 • 速度快(相對於Table)
TQuery元件 • Query1->SQL->Text • 無法修改資料 RequestLive屬性
TQuery元件 執行階段才執行SQL void __fastcall TForm1::FormCreate(TObject *Sender) { Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add("select * from student"); Query1->Open(); // 查尋 //Query1->ExecSQL(); //新增 刪除 修改 } 加上參數 SQL語法
TQuery元件 • SQL語法: • 新增:insert into表單 (欄位1,欄位2) values (值1,值2) • 刪除:delete from表單 where條件 • 修改:update表單 set欄位=值 where條件 • 查詢:跨表查詢 • select a.欄位,b.欄位 from表單1 as a, 表單2 as b where條件 Ex 17-4eg, p.17-50
DBChart元件 設定Series1的DataSource, XLabelSource, YValue.ValuesSource…
Master/Detail QuickReport
Master/Detail • ADOTable1 • ConnectionString • TableName • ADOTable2 • ConnectionString • TableName • MasterSource • MasterFields
QuickReport 設定DataSet
QuickReport 加入QRDBText 設定DataSet DataField 右鍵Preview
QuickReport QRExpr Expression屬性
QuickReport 程式驅動報表: QuickRep1->Preview(); QuickRep1->Print();
QuickReport • ADOTable1 • ConnectionString • TableName 加入SubDetail band 設定DataSet=ADOTable2 Master=QuickRep1 HasChild=true • ADOTable2 • ConnectionString • TableName • MasterSource • MasterFields
相對路徑: ShowMessage(ExtractFilePath(ParamStr(0))); void __fastcall TForm1::FormCreate(TObject *Sender) { String pth; pth=ExtractFilePath(ParamStr(0))+"\student.mdb"; ADOTable1->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ + pth +";Persist Security Info=False"; ADOTable1->TableName="table1"; ADOTable1->Open(); }
InstallShield project compiler 成 standalone以下是設定的方法:(1) 選擇 Project/Options 顯示 Project Options 的 dialog(2) 選擇 Packages TAB 把 build with runtime packages 這個打勾取消(3) 選擇 Linker TAB 把 Use dynamic RTL 這個打勾取消 不然會出現缺少vcl60.bpl的訊息