2013-10-23 44 views
0

當我通過SQL更新語句更改某些字段數據時,我需要看到它反映在DBGrid中,我不確定我正在做的正確方法是否正確 - > IBTable.Refresh。無論如何,它現在工作,但DBGrid的垂直滾動條移動到第一次刷新嘗試後的底部,如果我更新,然後再次刷新,垂直滾動條變小,並移動到DBGrid的中間。我不知道如何直接通過在DBGrid中更改值來更新某個字段中的值,如果有人向我展示如何操作,我很感激。如何將DBgrid的滾動條移動到頂端(德爾福)

IBTable.Refresh發佈後,如何將DBgrid的垂直滾動條移動到頂部位置並選擇最上面的行?

我的代碼很簡單,因爲我使用例如員工數據庫以及仍然在學習數據庫(火鳥)和德爾福:

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    //open IBQuery1, SQL command is in the component itself 
    IBQuery1.Open; 
    Label1.Caption := 'Tokyo''s budget was $' + TCaption(IBQuery1.FieldValues['BUDGET']); 
    //clear all SQL commands as it's TStrings and remembers prev. added lines 
    IBUpdateSQL1.ModifySQL.Clear; 
    //start building the SQL update statement 
    IBUpdateSQL1.ModifySQL.Append('update DEPARTMENT'); 
    if IBQuery1.FieldValues['BUDGET'] = '30000' then 
    IBUpdateSQL1.ModifySQL.Append('set BUDGET = 500000') 
    else 
    IBUpdateSQL1.ModifySQL.Append('set BUDGET = 30000'); 
    IBUpdateSQL1.ModifySQL.Append('where LOCATION = ''Tokyo'''); 
    //execute SQL update 
    IBUpdateSQL1.ExecSQL(ukModify); 
    //close IBQuery1 
    IBQuery1.Close; 
    //let's see new field data 
    IBTable1.Refresh; 
end; 

什麼我做的是從一個select語句讀一些現場數據,並改變它相應地與其他值相反,反之亦然。

感謝

+0

歡迎來到SO!你有沒有可以分享的UI代碼?這只是按鈕點擊功能。 – Derek

+2

如何調用'IBTable1.First'? –

回答

0

「我不知道如何直接通過只是改變它在DBGrid的自身更新某些字段中的值,我很感激,如果有人告訴我的一個例子,如何給它。」

不用擔心。改爲嘗試這種簡單的配置。

將窗體上以下控件。

  1. TIBDatabase(工具調色板 - Interbase的)
  2. TIBTransaction(工具調色板 - Interbase的)
  3. TIBQuery(工具調色板 - Interbase的)
  4. TDataSetProvider(工具調色板 - 數據訪問)
  5. TClientDataSet(工具調色板 - 數據訪問)
  6. TDataSource(Tool Palette - Data Access)
  7. TDBGrid(工具調色板 - 數據控件)
  8. TButton(工具調色板 - 標準)

現在讓我們來勾起來。使用對象檢查器設置一些屬性,以便控件一起工作,就像這樣。

  1. IBDatabase1:設置DefaultTransaction到IBTransaction1(在對象檢查使用下拉列表)
  2. IBTransaction1:設置DefaultDatabase到IBDatabase1
  3. IBQuery1:設置Database到IBDatabase1
  4. IBQuery1:設置Transaction到IBTransaction1
  5. DataSetProvider1 :將DataSet設置爲IBQuery1
  6. ClientDataSet1:設置ProviderName到DataSetProvider1
  7. DataSource1:設置DataSet到ClientDataSet1
  8. DBGrid1:設置DataSource到DataSource1

現在設置特定於數據庫

  1. IBDatabase1一些其他屬性:設置DatabaseNameLoginPromptParams
  2. IBQuery1:設置SQL

現在激活一些控件。您可以在設計時使用Object Inspector執行此操作,也可以編寫相應的代碼(例如,IBDatabase1.Connected := True),並將其放入按鈕的單擊事件中(如果您喜歡)。

  1. 連接數據庫(集IBDatabase1.Connected爲True)
  2. 激活您的查詢(設置IBQuery1.Active爲True)
  3. 激活您的ClientDataSet(設置ClientDataSet1.Active爲True)

現在(未成年人打嗝一邊)你應該在DBGrid中有一個完全可編輯的數據集。只需在那裏點擊即可編輯您喜歡的任何內容。如果將以下代碼寫入另一個按鈕的單擊事件,您只需保存所做的更改即可。

ClientDataSet1.Post; 
ClientDataSet1.ApplyUpdates(-1); 

這不是做到這一點的唯一方法,而且有很多改進的餘地,但現在你應該從你選擇哪個方向前進一個很好的起點。