我正在嘗試“用 mysql 連接兩個表單”我無法很好地解釋它。

當我點擊他時,我想以其他形式顯示用戶的名字和姓氏(點擊他的 ID 或 ID Odr? 或名字或姓氏。)
我怎么能用 MySQL 做到這一點?我是delphi和MySQL的初學者。
uj5u.com熱心網友回復:
這純粹與 Delphi 相關,與 DBMS(MySQL 或其他)無關。您想要實作的是在第二個表單上顯示來自主表單資料集的資料以獲取詳細資訊(顯示為模式)。
您需要更具體地了解您的實施:
- 資料集的位置:在您的主表單上還是在獨立的 DataModule 上?
- 此外,您沒有指定如何在詳細表單中使用所選記錄的值:在標簽、變數、其他 DB 感知控制元件中?
- 是否存在雙向關系(在明細表上編輯將在主表上編輯記錄)?
以下是您的案例的可能步驟:假設您的資料集控制元件名為“Dataset”,您的主表單是“Form1”,詳細表單是“Form2”。
首先: 如果您的資料集在您的主表單上,為了避免回圈依賴,您必須宣告:
- 實作中的詳細表單單元使用主表單單元的一部分。
- 界面中的主表單單元使用了詳細表單單元的一部分。
如果您的資料集位于獨立的“DataModule”上,則必須宣告:
- 實作中的詳細表單單元使用主表單單元的一部分。
- Interface中DataModule的單元使用了兩種形式的單元的一部分。
第二: 轉到DBGrid“OnCellClick”事件(因為您只想單擊單元格),撰寫代碼以檢查列的FieldName是否為“Id”或“Last Name”或任何您想要的,然后顯示詳細資訊表單(ShowModal)
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
//Add whatever fields you want
If (Column.FieldName = 'Id') or (Column.FieldName = 'Last Name') then
Form2.ShowModal;
end;
第三: 在詳細表格中,有兩種可能的實作:
- 如果您有 DB 感知控制元件(TDBEdit、TDBLabel、...),那么您可以設定它們的 ''DataSource'' 和 DataField'' 屬性以獲取資料并與資料集交換資料,例如 ''Form1.Dataset''或“DataModule1.Dataset”。并且每次顯示詳細資訊表單時都會重繪 資料。
- 如果您想在變數或自定義邏輯中使用所選記錄的值(例如將 TLabel 的標題更改為“用戶為 %s,id 為 %u”,或作為過濾另一個資料集的外鍵),那么您必須在詳細表單 ''OnShow'' 事件中獲取和設定這些值,如下例所示:
procedure TForm2.FormShow(Sender: TObject);
begin
Label1.Caption := Format('Details of %s %s - Id : %u', [Form1.Dataset.FirstNameField.AsString, Form1.Dataset.LastNameField.AsString, Form1.Dataset.IdField.AsInteger]);
end;
或者像這樣:
procedure TForm2.FormShow(Sender: TObject);
var
FirstName, LastName: string;
Id: Integer;
begin
FirstName := Form1.Dataset.FirstNameField.AsString;
LastName := Form1.Dataset.LastNameField.AsString;
Id := Form1.Dataset.IdField.AsInteger;
end;
第四: 有一個已知問題,第二個表單“OnShow”事件僅在表單創建后第一次呼叫“ShowModal”時觸發,而不會在后續呼叫中觸發。作為一種解決方法,您必須釋放或隱藏關閉它時的詳細資訊表單。您可以通過詳細資訊表單的“OnClose”事件來執行此操作,方法是為關閉操作設定一個值(“caFree”或“caHide”)。
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caHide;
end;
第五: 如果要從詳細資訊表單更新當前記錄,則必須在詳細資訊表單中放置一個用于驗證的控制元件(如按鈕),并使用“OnClick”事件處理程式將更改提交到資料集并關閉詳細表格。還有表單的“ModalResult”屬性,當分配一個非零值時,將關閉模態表單并將該值回傳給在主表單中呼叫的函式“ShowModal”:
- 如果您使用此屬性,則詳細資訊表單上的驗證按鈕必須分配回傳值,而在主表單上,您必須檢查回傳值并從詳細資訊中接收更新的值作為變數。
- 但是您也可以避免使用它,以便將更新邏輯保留在詳細資訊表單上。
如果您在模態表單中呼叫 Close 方法,則“ModalResult”會自動設定為“mrCancel”。這是一個無需 ''ModalResult'' 屬性即可更新記錄的示例(如果您的資料集位于 DataModule 上,則將“Form1”替換為 DataModule 的名稱):
procedure TForm2.BtnSaveClick(Sender: TObject);
begin
try
Form1.Dataset.Edit;
try
Form1.Dataset.FirstNameField.AsString := EditFirstName.Caption;
Form1.Dataset.LastNameField.AsString := EditLastName.Caption;
Form1.Dataset.Post;
except
Form1.Dataset.Cancel;
end;
finally
Close;
end;
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/509905.html
標籤:mysql德尔福
