要更新的資料視窗的SQL陳述句是否關聯到多個表,前面有用SETSQLSELECT()函式),我進行ll_rtn = dw_1.update(true,false)提示Data window does not have update capability,我如何進行,請各位神仙幫助解決下
uj5u.com熱心網友回復:
資料視窗的多表更新
原理分析:
資料視窗資料源來自兩個或兩個以上的表,相當于多個表連接建立的一個視圖,對于這種資料視窗,PB默認是不能修改的。當然我們可以通過設定它的Update 屬性,資料視窗的Update Properties用來設定資料視窗是否可Update、可Update的表、可Update列等,但不能同時設定兩個表可更新;所以當修改它的資料項時,我們不能簡單地用dw_1.update()來更新table,我們可以在程式中設定資料視窗可更新的一個表A(及其可更新列),其他表為不可更新,更新完表A后,再設定另一表B為可更新,表A設定為不可更新,依次類推。
解決示例:
我們以PowerBuilder7自帶的ASA6資料庫為例:
1、新建一個資料視窗d_grid_dep_emp,它的Select陳述句為
SELECT department.dept_id,
department.dept_name,
employee.emp_id,
employee.emp_fname,
employee.emp_lname
FROM department, employee
where employee.dept_id = department.dept_id
2、設定資料視窗d_grid_dep_emp的屬性,將列的taborder改為非0值;并點擊選單Rows——>Update Properties,設定此資料視窗Allow Updates,Table to Update設為department,Updateable Columns為department.dept_id,department.dept_name。
3、在視窗中更新資料視窗按鈕的clicked事件撰寫腳本:
long ll_rtn
// 修改Department表(Department表在第2步已設定為可更新)
ll_rtn = dw_1.update(true, false)
if ll_rtn = 1 then
//關閉對Department表的修改
dw_1.Modify("department_dept_name.Update = 'No'")
dw_1.Modify("department_dept_id.Update = 'No'")
dw_1.Modify("department_dept_id.Key = 'No'")
//設定Employee表成為新的可修改表
dw_1.Modify("DataWindow.Table.UpdateTable = 'employee'")
dw_1.Modify("employee_emp_id.Update = 'Yes'")
dw_1.Modify("employee_emp_fname.Update = 'Yes'")
dw_1.Modify("employee_emp_lname.Update = 'Yes'")
dw_1.Modify("employee_emp_id.Key = 'Yes'")
//修改Employee表
ll_rtn = dw_1.Update()
IF ll_rtn = 1 THEN
COMMIT USING SQLCA;
dw_1.retrieve()
messagebox('提示資訊','更新成功!')
ELSE
ROLLBACK USING SQLCA;
MessageBox('提示資訊', '更新失敗!')
END IF
//重設修改標志
dw_1.Modify("department_dept_name.Update = 'Yes'")
dw_1.Modify("department_dept_id.Update = 'Yes'")
dw_1.Modify("department_dept_id.Key = 'Yes'")
dw_1.Modify("DataWindow.Table.UpdateTable = 'department'")
dw_1.Modify("employee_emp_id.Update = 'No'")
dw_1.Modify("employee_emp_fname.Update = 'No'")
dw_1.Modify("employee_emp_lname.Update = 'No'")
dw_1.Modify("employee_emp_id.Key = 'No'")
ELSE
ROLLBACK USING SQLCA;
MessageBox('提示資訊', '更新失敗!')
END IF
這樣就完成了對兩個表的更新。當然我們可以將上面功能編成一個函式,在需要時呼叫。
uj5u.com熱心網友回復:
這個我測過很多次,多表的情況使用setsqlselect,datawindow就會丟失updateable屬性,沒什么辦法,
用object.datawindow.select="select .... from ....."
好像是可以,都是兩年前測過的。記不清楚了
uj5u.com熱心網友回復:
dw_1.Modify("DataWindow.Table.Select='" + SQL陳述句 + "'")uj5u.com熱心網友回復:
新手請教老師們,在SQL 2008 R2中提示Data window does not have update capability這個問題怎么解決??
請給予指導
uj5u.com熱心網友回復:
row->update properties->選擇更新的表uj5u.com熱心網友回復:
row->update properties->選擇更新的表轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/63623.html
標籤:數據庫相關
上一篇:pb6.5的程式升級到9.0 怎么弄 該做那些步驟 望大俠指點
下一篇:求救啊 *.DB檔案 單位的充電軟體購買記錄不知道被誰弄壞了 購買記錄無法打開 要是查不到 責任在我扣我兩個月的工資都不夠啊
