1、在2個物體和一個關系的多對多的概念模型中,關系所對應的庫表中應該有( );
A( 2個外鍵 ) B( 1個外鍵 ) C( 1個候選碼 )
2、PB不僅具有內置的( ),還可以應用嵌入SQL語言直接操作資料庫
A(PowerScript 腳本語言) B(自定義函式) C(預定義函式)
3、PB應用物件OPEN 事件是在( )時觸發。
A(執行程式) B(訪問資料庫) C(編譯應用程式)
4、( )功能是實作程式與資料庫之間的相互獨立于連接
A( DBMS ) B( ODBC ) C(資料源)
5、資料庫ODBC 介面中的描述檔案與資料源是( )。
A( 相互依賴 ) B( 相互獨立 ) C( 相互連接 )
6、嵌入SQL陳述句中的UPDATE 陳述句是革命劇 ( )所設定的更新條件進行更新。
A( UPDATE() ) B( WHERE 子句) C( SET 子句)
7、PB 內置編程語言 filter()函式是根據( )所設定的檢索條件進行檢索。
A( setSort() ) B( setfilter() ) C( WHERE 子句 )
8、事物處理物件的( ) 必須在連接資料庫前賦值。
A(連庫反饋屬性) B( 連庫屬性 ) C( 通訊屬性 )
9、資料視窗物件利用( )從資料庫中獲取在資料視窗中操作的資料。
A( QUERY 資料源物件 ) B( 資料庫表 ) C( SELECT 陳述句 )
10、通知應用程式可以訪問到的所有的資料庫的操作是( )連庫通訊。
A( 應用程式到視窗 ) B( 第2次 ) C( 第1次 )
11、SQLCode 是屬于事物物件的( );
A( 連庫屬性 ) B( 連庫反饋屬性 ) C( 通訊屬性 )
12、第1次連庫通訊任務的代碼通常撰寫在應用物件( )
A( Open ) B( Close 事件 )
13、DBError 事件所檢查的錯誤通常是發生在視窗物件和( )事件。
A( Clicked ) B( Open ) C( Close 事件 )
14、若在資料視窗中沒有正確保存已更行的資料并要求關閉視窗時,則有系統立即觸發
視窗的( )事件的代碼。
A( CloseQuery ) B( DBError ) C( Close )
15、PB應用 ( )生成可執行程式。
A( 動態連接庫 ) B( 工程物件 ) C( 工程畫板 )
-----------------------------------------------------------------------------------------
1、 根據所出的視窗w_1的 CloseQuery事件腳碼填空并回答問題。
Integer li_ret
IF dw_master.modifiedcount()+dw_master._________()>0 then
Li_ret=messagebox(“注意!”,”資料已經改變,是否需要保存”,&Question!,
Yesnocancel!)
Choose case li_ret
case 1 cb_update.__________(clicked!)
case 2
case 3 message.returnvalue=https://bbs.csdn.net/topics/1
//當屬性returnvalue=https://bbs.csdn.net/topics/1,則PowerBuilder自動取消關閉視窗操作
end choose
end if
(1)填空:
1_________________ ,2___________________
(2) 回答問題
<1>觸發CloseQuery 事件的操作
答:
<2>執行這段代碼的必要條件?
答:
2、若是視窗w_1 中有視窗單選按鈕控制元件 rb_name ,它的 Clicked Event 代碼是根據
某資料庫表中的姓名列欄位 ”c_name” 對資料視窗 dw_master 的資料進行排序,
請撰寫實作排序的代碼并回答問題。
(1) 撰寫實作排序的代碼
(2) 回答問題;
<1>setsort()函式功能?
<2>sort 函式功能
-----------------------------------------------------------------------
1.請根據事件觸發原理相關概念簡答下列問題。
(1) 請闡述DBError事件的功能(檢查那種型別的錯誤)?
(2) 根據什么操作觸發DBError事件?
(3) 該事件所要檢查的錯誤通常是發生在什么物件和事件?
(1) DBError事件的功能(要檢查的錯誤型別);
答:
(2) 觸發事件的操作:
答:
(3) 要檢查的錯誤通常發生在什么物件和事件:
答:
2、請闡述應用通訊物件訪問資料庫的第2次通訊的任務和通訊成功的判斷方式?
(1)任務:
答:
(2)通訊成功的判斷方式
答:
uj5u.com熱心網友回復:
好東東,留一份,以備將來考試用uj5u.com熱心網友回復:
我也來一段PB考試試題
1、 什么是視窗或控制元件的訊息佇列
控制元件(包括視窗)都可以回應一系列的不同事件,當多個事件發生時,這些事件會根據觸發先后或者觸發方式(比如Trigger, Post)不一樣,建立一個事件的訊息佇列來依次執行。PB中的訊息佇列和VC中的訊息佇列是一樣的,只是VC中允許顯式的處理,而PB則基本上自動處理了,不過也預留了二部分的介面,一是預定的一些方法名,如close(),open(),size()等,這些基本上對應了VC中的WM_CLOSE,WM_CREATE,WM_SIZE,而還有一類是要自定義的,方法就是在PB中新建一個事件,然后在事件ID串列中選擇一個ID號,就可以處理相對應的事件。
2、視窗和控制元件的區別是什么?
視窗是應用程式與用戶交流的主要界面,用它可以顯示系統的有關資訊,回應用戶的滑鼠和鍵盤輸入等等;控制元件是對資料和方法的封裝,它可以有自己的屬性和方法。屬性是控制元件資料的簡單訪問者;方法則是控制元件的一些簡單而可見的功能。
3、什么是背景關系?
一種屬性的有序序列,它們為駐留在環境內的物件定義環境。在物件的激活程序中創建背景關系,物件被配置為要求某些自動服務,如同步、事務、實時激活、安全性等等。多個物件可以存留在一個背景關系內。也有根據背景關系理解意思的意思。
背景關系物件描述的是應用程式執行的背景關系資訊,包括當前版本、是否在PB環境內按window插件或ActiveX控制元件運行等。 使用背景關系資訊,你可以修改顯示資訊和應用程式行為。
4、什么是背景關系服務?
是為背景關系所標置的物件配置相應的同步、事務、實時激活、安全性等,并且為其提供一個相應的軟體運行環境。
5、在建表的時候忘了添加列的唯一性指定,后來發現錯誤了,想加上去,結果提示有一個兩行是不唯一的,問如何知道是哪兩行不唯一,使得出現錯誤?
對表的所有欄位創建唯一索引,通過例外來獲得含有相同值的rowid,然后關聯原表來實作.生成測驗表及測驗資料。
6、什么叫繼承?PB的非可視物件能否實作繼承?
繼承就是面向物件中類與類之間的一種關系,繼承的類稱為子類,派生類,二被繼承的類稱之為父類、基類或超類。通過繼承,使子類具有與父類相同的方法與和屬性,同時子類也可以加入新的屬性和方法或者修改父類的屬性和方法簡歷建立新的類層次。
PB的非可視物件能實作繼承,也能實作相應的代碼重用。
7、PB自定義物件中可視物件和非可視物件的區別?使用中兩種物件都需要宣告嗎?
非可視物件是一個沒有可視化物件的特殊處理物件。在此物件中不存在類似于資料視窗、按鈕、串列框等可視物件,但它擁有自已的資料,以及處理這些資料的函式和事件。這些資料、函式和事件可以被認為定義了非可視物件的介面,我們通過介面來與非可視物件進行通信,也可以直接訪問它的公有資料;
可視物件是指可以是在舞臺上顯示出來的任何實體(如按鈕、電影剪輯、Loader、UI控制元件等),這些都是從DisplayObject派生的子類。
可視物件不需要宣告,非可視物件需要宣告。
uj5u.com熱心網友回復:
8、Datawindow中每頁列印固定行,如何設定?
1增加一個計算列,此計算列必須放在Detail段,Expression中輸入: ceiling(getrow()/20)
這里20還可以用全域函式取代,這樣可以允許用戶任意設定每頁列印多少行。
2 定義分組,選擇選單Rows->Create Group... 按計算列欄位分組,并一定將check box-->New Page On Group Break選中。
3 將此計算列設為不可視。
9、使用Update函式保存資料之前,通常要判斷資料視窗中是否有主鍵重復的資料,如果有重復則不允許提交。如果我們不撰寫程式判斷,資料視窗本身業可以進行校驗,但是顯示的都是英文的提示資訊。為此,我們通常在DBError事件中回傳1以屏蔽該英文的提示資訊,然后撰寫程式進行主鍵重復判斷。
進行主鍵重復判斷,實作的方法很多,效率高的不多。這里介紹的是效率非常高的一種方法。該方法的思路是,通過過濾,將只顯示過一次的資料慮除,如果過濾之后資料視窗中還有資料,則說明有重復資料,代碼如何實作?
string ls_fieldname
long ll_rc
ls_fieldname = "dept_id "
ll_rc = dw_1.RowCount()
dw_1.SetFilter( " ")
dw_1.Filter()
dw_1.SetSort(ls_fieldname + " A ")
dw_1.Sort()
dw_1.SetFilter(ls_fieldname + " <> " + ls_fieldname + "[-1] or GetRow() =1 ")
dw_1.Filter()
if dw_1.RowCount() < ll_rc then
MessageBox( "注意 ",ls_fieldname + "列中存在重復的資料! ",StopSign!)
end if
10、請問一下兩種代碼哪種有資訊框提示,為什么?
(1)String ls_name,ls_temp
SetNull(ls_temp)
Ls_name = "張三 "
Ls_name = ls_name + ls_temp
If IsNull(ls_name) Then MessageBox( "提示 ", "空值! ")
(2)String ls_name,ls_temp
SetNull(ls_temp)
Ls_name = "張三 "
If IsNull(ls_ temp) Then MessageBox( "提示 ",ls_name + ls_temp)
第(1)種代碼有資訊提示框;因為函式MessageBox ()經常用來顯示一定的資訊,和用戶互動時經常使用。如果要顯示的資訊是NULL時,提示視窗不會顯示。
第(2)種中在MessageBox()函式中直接添加了字串,所以沒有任何資訊框提示。
11、取得資料視窗中欄位型別的語法如何寫?
Describe()函式可以得到資料視窗的多項屬性值,用它實作如下:
long ll_column_count
long ll_i
string ls_column[] //列名
string ls_column_text[] //text的名字
//得到資料視窗的總列數
ll_column_count = long(dw_1.Describe(″DataWindow.Column.Count″))
//回圈依次讀取
for ll_i = 1 to ll_column_count
ls_column[ll_i] = dw_1.Describe(″#″+string(ll_i)+″.Name″)
ls_column_text[ll_i] = dw_1.Describe(ls_column[ll_i] + ″_t.text″)
next
12、一個資料視窗中有以下資料源
SELECT department.dept_id, department.dept_name,
employee.emp_id, employee.emp_fname,
employee.emp_lname FROM department, employee WHERE
在創建資料視窗時設定為Department表可修改更新,給出一段需要具有修改更新表employee的代碼?
UPDATE department.dept_id, department.dept_name,
employee.emp_id, employee.emp_fname,
employee.emp_lname SET department, employee WHERE
13、用資料視窗代替 SQL 陳述句
通常,為了獲得某些資料,采用資料視窗和 SQL 陳述句都是可行的,例:為了檢索電話檔案中的用戶名,可以利用 SQL 陳述句,將所有的資料檢索到一個多行編輯中,也可以檢索到一個資料視窗中。如使用第一種方法:
方法一
首先定義一個游標:
DECLARE CUR CURSOR FOR
SELECT "DA_DH ". "HM "
FROM "DA_DH ";
然后可以:
string stxt[],st
int li
open cur
do li = li + 1
fetch cur
into :stxt[li] ;
st=st+stxt[li] + "~r~n "
loop while stxt[li] <> " "
close cur;
mle_1.txt = st
方法二:
dw_1.settransobject(sqlca)
dw_1.retrieve()
請問哪種方法效率高?
方法二效率高。
14、連庫操作是非常影響執行速度的操作. 因此在程式中,一旦與資料庫連接后就應當盡量保持與資料庫的連接, 減少連接資料庫的次數.PowerBuilder 提供里兩個函式來建立資料視窗與事務物件的連接:
SetTrans()
SetTransObject()
請問哪種執行速度更快?為什么?
這兩個函式有一個重要的區別就是在使用SetTrans()函式時,用戶不需做任何資料初始化或事務物件初始化作業;用戶只需要在這里填充一個事務物件,PB就會自動完成對該事物物件的初始化以及和資料庫連接的作業。而使用SetTransObject()函式時,用戶必須首先把所用的事務物件連接到資料庫上,但是使用SetTransObject()函式可以為資料庫維持一個開放性的連接,因此在一般情況下,為了提高效率,總是采用SetTransObject()函式,所以SetTransObject()函式執行速度更快。
15、將資料視窗中的電話號碼存放在一個陣列中.
請比較下面兩中方法.
方法一:
string da_dh[]
long ll,I
ll = dw_1.rowcount()
for i = ll to 1 stet –1
da_dh[i] = dw_1.getitemstring(i, "dhhm ")
next
方法二:
string da_dh[]
da_dh[] = dw_1.object.dhhm.current
哪種方法執行速度更快?
方法二速度更快。
16、欄位使用了下拉串列框、下拉資料視窗和單選按鈕等有代碼表的編輯風格時,在資料視窗控制元件上顯示的值和欄位實際得到的值并不相同,使用函式GetItemX只能讀取這樣的欄位的真實取值,而不是用戶看到的值。如何才能讀取得到用戶看到的值?
可以使用函式LookUpDisplay。
LookUpDisplay函式不能直接從PowerScript呼叫,可以在Describe中和Evaluate函式配合使用。因為函式Lookupdisplay不能指定對哪行資料進行操作,它的引數只有一個欄位名稱,所以必須和Evaluate函式配合使用。
該函式的語法是:
Lookupdisplay(columnname) 其中,引數columnname是欄位的名稱,而不是一個字串。函式執行錯誤則回傳空字串。
17、如何將字串”語文,數學,英語,物理”中逗號之間的內容,用一段代碼一項一項寫到一個多行編輯框mle_list中?
#include <iostream.h>
#include <cstring>
int main()
{
char charArray[]="語文,數學,英語,物理";
char *tokenPtr;
cout<<"The string to be tokenized is:\n"<<charArray
<<"\n\nThe tokens are:\n";
tokenPtr=strtok(charArray,",");
while(tokenPtr!=NULL)
{
cout<<tokenPtr<<"\n";
tokenPtr=strtok(NULL,",");
}
cout<<endl;
return 0;
}
程式運行結果
18、運用遞回演算法寫一個函式實作1到100的累加
#include <iostream.h>
int add(int);
int main()
{
cout<<"1+2+3+...+98+99+100="<<add(100);
cout<<endl;
return 0;
}
int add(int n)
{
if(n==1)
return n;
else
return n+add(n-1);
}
程式運行結果:
uj5u.com熱心網友回復:
這套試卷有答案沒uj5u.com熱心網友回復:
準備期末了,同學,你不帶你這樣的吧。。。。。我要告訴你們老師
uj5u.com熱心網友回復:
通訊成功的判斷方式?uj5u.com熱心網友回復:
我一般都是拿著參考手冊干活的。。。。。。。。uj5u.com熱心網友回復:
哎,我用pb已經10年多了。但還是好多題不會做呢。uj5u.com熱心網友回復:
有好多我咋不會做咧...uj5u.com熱心網友回復:
考試和實戰本來就是兩回事uj5u.com熱心網友回復:
這套試卷有答案沒uj5u.com熱心網友回復:
樓主求答案。
uj5u.com熱心網友回復:
用PB從4.0到12.5,開發專案幾十套了,還是許多題目做不來呀,使用中許多代碼與函式是不記憶的,通過F1查找轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/48254.html
標籤:基礎類
下一篇:win7下取得硬碟機器碼的dll
