欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      vf實(shí)例編程(計(jì)算機(jī)二級(jí)Foxpro在VFP中模擬動(dòng)畫)(5篇材料)

      時(shí)間:2019-05-15 07:13:53下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《vf實(shí)例編程(計(jì)算機(jī)二級(jí)Foxpro在VFP中模擬動(dòng)畫)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《vf實(shí)例編程(計(jì)算機(jī)二級(jí)Foxpro在VFP中模擬動(dòng)畫)》。

      第一篇:vf實(shí)例編程(計(jì)算機(jī)二級(jí)Foxpro在VFP中模擬動(dòng)畫)

      計(jì)算機(jī)二級(jí)Foxpro:在VFP中模擬動(dòng)畫

      在當(dāng)今眾多的編程語(yǔ)言中,VFP的簡(jiǎn)單、方便和實(shí)用使我一直情有獨(dú)衷。它不僅提供了對(duì)中、小型數(shù)據(jù)庫(kù)完善的管理和操作機(jī)制,在應(yīng)用程序界面的設(shè)計(jì)上也 提供了豐富的手段。比如說(shuō),VFP的表單設(shè)計(jì)器提供了圖象控制,允許我們直接在表單中添加.BMP圖片。稍顯不足的是它不支持其他格式的圖象,更不用說(shuō)是 動(dòng)畫了。

      由于圖象控制和其他控制一樣,具有自己一整套的屬性,在設(shè)計(jì)時(shí)可以動(dòng)態(tài)地改變它,因此我在實(shí)踐中摸索到一種變通的方法,在VFP的表 單中加入模擬的“動(dòng)畫”。其設(shè)計(jì)思想是準(zhǔn)備幾幀連貫的.BMP圖象(可用相關(guān)的繪圖軟件自行制作),利用計(jì)時(shí)器的計(jì)時(shí)功能,在規(guī)定的時(shí)間間隔內(nèi)動(dòng)態(tài)地改變 所顯示的.BMP圖象。下面我就通過(guò)一個(gè)演示實(shí)例來(lái)加以說(shuō)明:首先,我準(zhǔn)備了四幅連貫的紅旗飄圖象,分別取名為:1.bmp,2.bmp,3.bmp和 4.bmp。如下所示(略),然后使用表單設(shè)計(jì)器設(shè)計(jì)表單如下:

      演示表單

      其中包括三個(gè)控制:Image(圖象),Timer(計(jì)時(shí)器)和Command(命令按鈕)。設(shè)置屬性如下:

      Image.Picture=“1.bmp”Ttimer.Enabled=.t.Timer.Interval=200Command.Caption=“退出演示”

      在表單的Activate事件中添加如下代碼:

      Public II=1在計(jì)時(shí)器的Timer事件中添加代碼如下:If I $#@62;=

      4I=1Else

      I=I+1EndifPic=Str(I,1)+“.bmp”Thisform.Image.Picture= Pic

      在命令按鈕的Click事件中添加代碼如下:

      Thisform.Release

      最后,保存并運(yùn)行表單,我們會(huì)看到窗口中一幅鮮艷的紅旗在迎風(fēng)招展。單擊“退出演示”命令按鈕,模擬動(dòng)畫的演示就結(jié)束了。

      VF編寫簡(jiǎn)易計(jì)算器

      (1)建立應(yīng)用程序用戶界面。

      選擇“新建”表單,進(jìn)入表單設(shè)計(jì)器,增加一個(gè)文本框控件Textl、一個(gè)標(biāo)簽控件Label1和一個(gè)命令按鈕組CommandGroup1,并將命令按鈕組的ButtonCount屬性改為16。

      (2)設(shè)置對(duì)象屬性如下表所示:

      CommandGroup1中各按鈕的屬性設(shè)置

      對(duì)象 屬性 屬性值 說(shuō)明

      Command1~Command10 Caption 依次改為:1、2、3、4、5、6、7、8、9、0

      FontBold.T.Command11~Command10 Caption 依次改為:.、=、+、-、*、/

      FontBold.T.(3)編寫程序代碼。

      ①編寫CommandGroup1的Click事件代碼:

      IF THISFORM.Tag=.T.THISFORM.Text1.Value=ALLT(RIGHT(STR(THIS.Value),1))

      THISFORM.Tag=〃 〃

      ELSE

      a=THISFORM.Text1.Value

      THISFORM.Text1.Value=a+ALLT(RIGHT(STR(THIS.Value),1))

      ENDIF

      ②編寫“.”按鈕Command11的Click事件代碼:

      a=THISFORM.Text1.Value

      THISFORM.Text1.Value=a+〃.〃

      ③編寫“=”按鈕Command12的Click事件代碼:

      a=THISFORM.Text1.Value

      THISFORM.Text1.Value=ALLT(STR(&a))

      THISFORM.Tag=.T.④編寫“+”按鈕Command13的Click事件代碼:

      a=THISFORM.Text1.Value

      THISFORM.Text1.Value=a+〃+〃

      THISFORM.Tag=〃 〃

      ⑤編寫“-”按鈕Command14的Click事件代碼:

      a=THISFORM.Text1.Value

      THISFORM.Text1.Value=a+〃-〃

      THISFORM.Tag=〃 〃

      ⑥編寫“*”按鈕Command15的Click事件代碼:

      a=THISFORM.Text1.Value

      THISFORM.Text1.Value=a+〃*〃

      THISFORM.Tag=〃 〃

      ⑦編寫“/”按鈕Command16的Click事件代碼:

      a=THISFORM.Text1.Value

      THISFORM.Text1.Value=a+〃+〃

      THISFORM.Tag=〃 〃

      vf編程計(jì)算3?。??。?!

      set talk off

      s=0

      p=1*2

      n=3

      do while n<=5

      p=p*n

      s=s+p

      n=n+1

      enddo

      ?s

      結(jié)果為150

      VFP中常用WIN32API函數(shù)調(diào)用事例

      我們?cè)赩FP編程時(shí),為了彌補(bǔ)VFP本身功能的不足,常常會(huì)用到WIN32API函數(shù)來(lái)對(duì)VFP的功能行擴(kuò)展,例如取得系統(tǒng)信息、對(duì)注冊(cè)表進(jìn)行操作 等,但是由于WIN32API函數(shù)是C++的數(shù)據(jù)結(jié)構(gòu)形式,在調(diào)用時(shí)與VFP的數(shù)據(jù)格式有所不同,因此在調(diào)用時(shí)往往會(huì)產(chǎn)生問(wèn)題,而目前的一些資料所介紹的 大都是VB、DELPHI等語(yǔ)言如何調(diào)用,對(duì)VFP如何調(diào)用介紹的比較少,更缺少具體的調(diào)用事例,下面我分幾次介紹在VFP如何調(diào)用WIN32API函 數(shù),并就一些常用的WIN32API函數(shù)作一介紹,由于 本人水平有限,所介紹的內(nèi)容,僅供您參考,也歡迎您在我的[請(qǐng)您留言]中共同探討:

      一、VFP中調(diào)用WIN32API函數(shù)的格式

      VFP中調(diào)用WIN32API函數(shù)的命令主要是:

      DECLAREDLL 它用于注冊(cè)外部 Windows 32 位動(dòng)態(tài)鏈接庫(kù)(.DLL)中的一個(gè)函數(shù)。

      語(yǔ)法: DECLARE [cFunctionType] FunctionName IN LibraryName [AS AliasName]

      .......[cParamType1 [@] ParamName1, cParamType2 [@] ParamName2,...]

      說(shuō)明:

      cFunctionType 指定該函數(shù)返回值的類型,其類型代碼如下:

      SHORT16 位整數(shù)

      INTEGER32 位整數(shù)

      SINGLE 32 位浮點(diǎn)數(shù)

      DOUBLE 64 位浮點(diǎn)數(shù)

      STRING 字符串

      FunctionName 指定要注冊(cè)使用的32位函數(shù)名。注意 FunctionName 區(qū)分大小寫。

      如果該函數(shù)名與Visual FoxPro的保留字相同,應(yīng)使用AS參數(shù)另起別名。

      IN LibraryName 指定該函數(shù)所在的外部動(dòng)態(tài)鏈接庫(kù)文件名,如果LibraryName為:

      WIN32API時(shí),VFP將依次查找KERNEL32.DLL、GDI32.DLL、USER32.DLL、MPR.DLL及ADVAPI32.DLL等動(dòng)態(tài)鏈接庫(kù)文件名。

      AS AliasName 當(dāng)API函數(shù)的名稱與Visual FoxPro的保留字相同時(shí),另取 AliasName別名,另取的別名是不區(qū)分大小寫的。

      cParameterType1 [@] ParamName1, cParameterType2 [@] ParamName2,...指定傳遞給被調(diào)用的32位.DLL函數(shù)的參數(shù)類型及參數(shù)名稱。其類 型代碼如FunctionType,如果要以傳址方法傳遞參數(shù)則應(yīng)在參數(shù)名前加上@。

      2.CLEAR DLLS 釋放所有利用DECLAREDLL命令所裝入的動(dòng)態(tài)鏈接庫(kù)。

      xx<>0 獲取指定磁盤的卷標(biāo)成功,反之則未成功。

      C_var=指定磁盤的卷標(biāo),是個(gè)十進(jìn)制的數(shù)值,與我們?cè)贒OS下看到的16進(jìn)制不同。

      C_cd=系統(tǒng)規(guī)定的文件名每一部分的長(zhǎng)度,是個(gè)十進(jìn)制的數(shù)值。

      C_qf=文件名的大小寫標(biāo)志,是個(gè)十進(jìn)制的數(shù)值。

      怎么樣很簡(jiǎn)單吧,我們可以把獲取的磁盤卷標(biāo),用來(lái)加密我們的軟件,這樣 我們的 軟件就具有防拷貝的功能了。

      將DBF表導(dǎo)入到SQLSERVER中的函數(shù)

      給大家一個(gè)自已寫的將DBF表導(dǎo)入到SQL SERVER數(shù)據(jù)庫(kù)中的函數(shù)

      我一直在我的程序中用,方便不少

      請(qǐng)多多指都教,有什么問(wèn)題可以回帖或郵trywell@sohu.com

      連接句柄為CON,可以調(diào)用本函數(shù)之前執(zhí)行如下語(yǔ)句CON=SQLSTRINGCONNECT(“DRIVER=SQL SERVER;SERVER=(LOCAL);UID=SA;PWD=;DATABASE=你的數(shù)據(jù)庫(kù)名”)

      ***dbftosql()

      PROCEDURE DBFTOSQL PARA MDBF LOCAL I,MFIELD,MTYPE,MCOLUMN,MSQLTYPE,MLEN,MSQL1,MSQL2 MFIELD='' MTYPE='' MCOLUMN='' MSQLTYPE='' MLEN='' MSQL1='' MSQL2='' IF!USED(MDBF)USE &MDBF ENDI SELE &MDBF I=1 DO WHILE!EMPTY(FIELD(I))MFIELD=FIELD(I)MTYPE=TYPE(MFIELD)DO CASE CASE UPPER(TYPE(MFIELD))='C' MSQLTYPE='CHAR' CASE UPPER(TYPE(MFIELD))='Y' MSQLTYPE='MONEY' CASE UPPER(TYPE(MFIELD))='D' MSQLTYPE='DATETIME' CASE UPPER(TYPE(MFIELD))='T' MSQLTYPE='DATETIME'

      CASE UPPER(TYPE(MFIELD))='B' MSQLTYPE='FLOAT' CASE UPPER(TYPE(MFIELD))='F' MSQLTYPE='FLOAT' CASE UPPER(TYPE(MFIELD))='G' MSQLTYPE='IMAGE' CASE UPPER(TYPE(MFIELD))='I' MSQLTYPE='INT' CASE UPPER(TYPE(MFIELD))='L' MSQLTYPE='BIT' CASE UPPER(TYPE(MFIELD))='M' MSQLTYPE='TEXT' CASE UPPER(TYPE(MFIELD))='N' MSQLTYPE='FLOAT' ENDCASE IF 'C'$MTYPE MLEN='('+ALLT(STR(LEN(&MFIELD)))+')' ELSE MLEN='' ENDI IF EMPTY(MCOLUMN)MCOLUMN=FIELD(I)+SPACE(1)+ALLT(MSQLTYPE)+MLEN ELSE MCOLUMN=MCOLUMN+','+FIELD(I)+SPACE(1)+ALLT(MSQLTYPE)+MLEN ENDI IF EMPTY(MSQL1)MSQL1=FIELD(I)ELSE MSQL1=MSQL1+','+FIELD(I)ENDI IF EMPTY(MSQL2)MSQL2='?'+FIELD(I)ELSE MSQL2=MSQL2+',?'+FIELD(I)ENDI I=I+1 ENDD MSQL='CREATE TABLE '+MDBF+SPACE(1)+'('+MCOLUMN+')' IF SQLEXEC(CON,MSQL)=1 ENDI IF RECCOUNT()>0 GO TOP DO WHILE!EOF()I=1

      DO WHILE!EMPTY(FIELD(I))

      XX=FIELD(I)

      IF XX=.NULL.REPL &XX WITH ''

      ENDI

      I=I+1

      ENDD

      MSQL='INSERT INTO '+MDBF+SPACE(1)+'('+MSQL1+')'+SPACE(1)+'VALUES('+MSQL2+')'

      IF SQLEXEC(CON,MSQL)=1

      ENDI

      SKIP

      ENDD

      ENDI

      USE IN &MDBF

      RETU VFP遠(yuǎn)程視圖使用面面觀

      摘要:遠(yuǎn)程視圖是Visual Foxpro 5.0 中開發(fā)Client/Server 應(yīng)用系統(tǒng)的基礎(chǔ),本文首先介紹了遠(yuǎn)程視圖有關(guān)參數(shù)的放置技巧,然后介紹如何去設(shè)計(jì)、使用遠(yuǎn)程視圖,最后討論了使用遠(yuǎn)程視圖的四個(gè)實(shí)際問(wèn)題。

      一、緒論

      VFP 是一種較好的客戶/ 服務(wù)器應(yīng)用系統(tǒng)開發(fā)工具,用VFP 開發(fā)C/S 系統(tǒng)的關(guān)鍵是如何訪問(wèn)遠(yuǎn)程數(shù)據(jù)(遠(yuǎn)程服務(wù)器中的Table/View)。可以使用VFP 提供的SQL Pass-Through 函數(shù)訪問(wèn)遠(yuǎn)程數(shù)據(jù),但最常用的方法是使用遠(yuǎn)程視圖(Remote View)去訪問(wèn)遠(yuǎn)程數(shù)據(jù)。本文結(jié)合本人的使用經(jīng)驗(yàn)對(duì)遠(yuǎn)程視圖的使用技巧加以介紹。

      二、遠(yuǎn)程視圖的環(huán)境設(shè)置

      在設(shè)計(jì)遠(yuǎn)程視圖時(shí),需要對(duì)遠(yuǎn)程視圖的有關(guān)環(huán)境信息進(jìn)行設(shè)置。使用Tools 菜單中的Options....選項(xiàng)來(lái)設(shè)置Remote Data 選項(xiàng)。其選項(xiàng)設(shè)置說(shuō)明如下:

      *Share Connection: 指出今后設(shè)計(jì)的遠(yuǎn)程視圖是否使用共享連接。使用共享連接可大大減少數(shù)據(jù)庫(kù)服務(wù)器中客戶訪問(wèn)許可數(shù),但會(huì)影響客戶機(jī)的訪問(wèn)速度。

      *SQL Updates/Criteria: 指出對(duì)后臺(tái)數(shù)據(jù)進(jìn)行update 操作的條件。

      它有四種可能:

      ①Key Field only ②Key and Updatable Fields

      ③Key and Modified Fields ④Key and Time Stamp。

      一般選擇③較合適。

      *SQL Updates/Method: 指出對(duì)后臺(tái)數(shù)據(jù)的更新方法。

      它有兩種選擇:①SQL Delete then Insert ②SQL update。

      一般選擇②比較合適。

      *Connection Defaults: 主要用于SQL Pass-Through 函數(shù)訪問(wèn)遠(yuǎn)程數(shù)據(jù),對(duì)于遠(yuǎn)程視圖則不需要放置。

      三、遠(yuǎn)程視圖的設(shè)計(jì)

      有兩種方法設(shè)計(jì)遠(yuǎn)程視圖,一是使用View Designer;二是使用SQL 語(yǔ)句。用View Designer 可設(shè)計(jì)較為簡(jiǎn)單的視圖,而使用SQL 的Create Remote View 語(yǔ)句則可進(jìn)行復(fù)雜視圖的設(shè)計(jì)。如果試圖去用View Designer 觀察或修改(用Create 創(chuàng)建的視圖)則極有可能被破壞它(例如:若創(chuàng)建視圖的Select 語(yǔ)句中含有exists 子句, 則一定會(huì)被破壞!)

      1.用Create 命令設(shè)計(jì)

      例如:假定連接名為WYFconnect,兩個(gè)遠(yuǎn)程表為SealList 和ShipList.Create 命令可如下:

      CREATE SQL VIEW ViewTest REMOTE CONNECTION WYFconnect AS SELECT SealList.* FROM SealList, ShipList WHERE SealList IS NOT NULL AND SealList AND 箱號(hào)NOT IN(SELECT 箱號(hào)FROM ShipList WHERE ShipList.箱號(hào)IS NOT NULL AND ShipList.船名=SealList.船名

      使用該方法可以在程序中動(dòng)態(tài)地構(gòu)造滿足不同條件的遠(yuǎn)程視圖(View Designer 不能構(gòu)造帶參數(shù)的遠(yuǎn)程視圖)。例如:設(shè)m.ShipName 為一可變內(nèi)存變量,其創(chuàng)建語(yǔ)句為:

      CREATE SQL VIEW ViewTest REMOTE CONNECTION WYFconnect AS SELECT * FROM SealList WHERE 船名=m.ShipName.2.用View Designer 設(shè)計(jì)

      啟動(dòng)View Designer 選擇連接名后出現(xiàn)設(shè)計(jì)圖, 在其上部可以加入遠(yuǎn)程服務(wù)器中的表或視圖,在其下部進(jìn)行參數(shù)/ 條件設(shè)置:

      *Select Criteria: 設(shè)置遠(yuǎn)程數(shù)據(jù)值上的記錄必須滿足的條件,類似于下SQL Select 語(yǔ)句中的Where 子句。在這里可以構(gòu)造復(fù)雜條件,但條件中使用的函數(shù)和語(yǔ)法規(guī)則必須是后臺(tái)數(shù)據(jù)庫(kù)支持的,例如:不能使用DTOC(日期)=‘90/01/01’,而必須使用Convert(char(10), 日期)=‘90/01/01’, 因?yàn)楹笈_(tái)數(shù)據(jù)庫(kù)不支持DTOC()函數(shù)。

      *Fields: 選擇結(jié)果集中的字段,在這里要強(qiáng)調(diào)的是Function/Expression 的使用,使用它可構(gòu)造出與源表字段不同的字段,如:T.船名+‘’+T.中文AS 船舶。實(shí)踐證明Function/Expression 中不能使用雙引號(hào),而只能使用單引號(hào)。

      *Order by 和Group by: 對(duì)結(jié)果分組、分類。要求符合后臺(tái)數(shù)據(jù)庫(kù)所支持的SQL 語(yǔ)法。

      *Update Criteria: 設(shè)置視圖的有關(guān)替換參數(shù), 具體如下:

      ①要選中Send SQL Update

      ②SQL where 一般選擇Key and Modify Fields

      ③Update Using 一般選擇SQL Update

      ④務(wù)請(qǐng)選擇關(guān)鍵字段和可更改字段(在鑰匙符號(hào)下面和鉛筆符號(hào)下面加“√”),否則將無(wú)法正確完成Insert/update 功能。

      四、遠(yuǎn)程視圖的使用

      1.緩沖與鎖定設(shè)置

      對(duì)于遠(yuǎn)程視圖,建議使用緩沖機(jī)制來(lái)提高遠(yuǎn)程視圖的工作效率和使用的方便性。首先在Option 菜單中設(shè)置Data 組件,需設(shè)置下列參數(shù):

      ①選擇Open Exclusive 以讓庫(kù)共享打開,庫(kù)中的遠(yuǎn)程視圖則可共享使用;

      ②Locking And Buffering 設(shè)置:選中Automatic File locking 和Multiple Record Locks,并將Buffering 設(shè)置成Fields Buffering,加鎖方式設(shè)置為“記錄級(jí)樂(lè)觀鎖定”。在具體設(shè)計(jì)Form 時(shí),對(duì)數(shù)據(jù)環(huán)境中的每一個(gè)遠(yuǎn)程視圖光標(biāo)可重新根據(jù)需要來(lái)設(shè)置鎖定和緩沖機(jī)制。如果不重新設(shè)置,它取Form 的缺省設(shè)置。

      2.數(shù)據(jù)的寫入與前臺(tái)刷新

      對(duì)于采用了Buffering 技術(shù)的遠(yuǎn)程視圖,當(dāng)修改/ 刪除/ 增加了記錄時(shí),需用TableUpdate(.T.,.T.)函數(shù)來(lái)確保數(shù)據(jù)寫到后臺(tái)數(shù)據(jù)庫(kù)中;若要取消對(duì)緩沖區(qū)中視圖數(shù)據(jù)的修改,需用TableRevert(.T.)函數(shù)。例如:

      Select View1

      Append Blank

      Begin Transaction

      if TableUpdate(.T.,.T.)

      EndTranseaction

      else

      RollBack

      =TableRevert(·T ·)

      endif

      如果該遠(yuǎn)程視圖與別的表/ 遠(yuǎn)程視圖發(fā)生級(jí)聯(lián)修改/ 刪除/ 增加關(guān)系,則需使用事務(wù)機(jī)制,以確保數(shù)據(jù)的完整性。

      如果對(duì)應(yīng)視圖的后臺(tái)表/ 視圖數(shù)據(jù)發(fā)生變化時(shí),使用下述方法讓前臺(tái)客戶機(jī)中的數(shù)據(jù)與實(shí)際后臺(tái)數(shù)據(jù)一致:

      ①Select 〈遠(yuǎn)程視圖名〉

      USE〈遠(yuǎn)程視圖名〉&& 再次打開即可

      ②Select 〈遠(yuǎn)程視圖名〉

      =Requery()&& 刷新緩沖區(qū)值

      五、遠(yuǎn)程視圖使用中碰到的若干問(wèn)題

      1.如何在一個(gè)遠(yuǎn)程視圖中多次使用同一遠(yuǎn)程數(shù)據(jù)源?

      依靠別名。例如:Select A.船名,A.航次,B.姓名as 操作員,C.姓名as 倉(cāng)庫(kù)員from Shipname A, worker B, worker C where A.操作員代碼=B.Code and A.倉(cāng)庫(kù)員代碼=C.Code

      2.設(shè)計(jì)遠(yuǎn)程視圖時(shí)Select 語(yǔ)句的語(yǔ)法應(yīng)符合VFP 或后臺(tái)數(shù)據(jù)庫(kù)?

      后臺(tái)數(shù)據(jù)庫(kù)支持的SQL 語(yǔ)法。例如:Create SQL View AAA Remote Conection BB As Select A.* From Shipname A Where Convert(Char(10), 進(jìn)港日期)=‘1998/05/30’

      3.遠(yuǎn)程視圖能否使用Pack 和Recall 語(yǔ)句?

      不能使用pack 語(yǔ)句,例如:

      use View1;

      delete for 〈條件〉 && 加刪除標(biāo)志

      pack && 錯(cuò)誤,必須使用TableUpdate()函數(shù)

      對(duì)于Recall 命令,如果已執(zhí)行了TableUpdate(),則執(zhí)行無(wú)效;若未發(fā)Tableupdate(), 則可用Recall 來(lái)取消刪除標(biāo)記。

      4.本地視圖的數(shù)據(jù)源有遠(yuǎn)程視圖,如何刷新本地視圖?

      例如:有兩個(gè)遠(yuǎn)程視圖Rview1 Rview2, 創(chuàng)建本地視圖的命令為:Create SQL view As Select A.* B.* from Rview1 A,R view2 B where A.箱號(hào)=B.箱號(hào)

      刷新view 之前必須先刷新Rview1 和Rview2:

      =requery(“Rview1”)

      =Requery(“Rview2”)

      =Refresh(“view”)

      六、小結(jié)

      遠(yuǎn)程視圖是VFP 訪問(wèn)遠(yuǎn)程數(shù)據(jù)服務(wù)器中數(shù)據(jù)的有利武器,有了前面的介紹,就可得心應(yīng)手地設(shè)計(jì)C/S 應(yīng)用系統(tǒng)了。

      參考文獻(xiàn)

      [1 ]E.sander 等著visual FoxPro3.0 實(shí)用指南機(jī)械工業(yè)出版社1996

      The Skills of Using Remote View in Visual Foxpro 5.0

      Wuyefu and Yuanxiaoling

      Dept.Computer, Wuhan Transaction University , WuHan430063

      ABSTRACT: In the paper, it is introduced how to choice option parameters and to use remote view in Visual Foxpro 5.0.In the end, the solution to some problems is also discussed.KEYWORDS: Remote view, Remote Data, Connection, Lock, buffering

      一個(gè)很好的c-s主程序

      * * 2003/11/21 《星級(jí)酒店管理》系統(tǒng) 主程序 * * 作者:劉雪均

      * * 版權(quán)所有(C)2003 寶明城大酒店 * * 廣東深圳市公明鎮(zhèn)長(zhǎng)春花園 * * 深圳, 廣東 518106 * * 中國(guó)

      * * 說(shuō)明: 版權(quán)所有,嚴(yán)禁非法復(fù)制,違者必窮 Clear Clear All Clear Dlls Clear Macros Close All Set Talk Off Set Safe Off Set Escape Off Set Debug Off Set Exact Off Set Sysmenu Save Set Sysmenu To Set Sysmenu Off Set NullDisplay To '' Set Null Off Set Dohistory Off Set Notify Cursor Off Release Windows Close Databases Set Date To YMD Set Hour To 24 Set Seconds Off Set Century On Set Deleted On Set Resource On Set Help On On Shutdown Quit Set Clock Off With _Screen.WindowState=2.ZOOMBOX=.F..Movable=.F..MinButton=.F..MaxButton=.F..Closable=.F..Icon=“Ball.ICO”.Caption='《星級(jí)酒店管理》系統(tǒng)--均維軟件工作室'.LockScreen=.T..AddObject('ScreenImg','Image').ScreenImg.Stretch=2.ScreenImg.Visible=.T..ScreenImg.Height=Sysmetric(2)-50.ScreenImg.Width=Sysmetric(1).ScreenImg.Picture='DeskTopr.jpg'.LockScreen=.F.Endwith =Capslock(.T.)=Numlock(.T.)Public TempFile,ExePath,CurWinDir,CurPic,pCompany,ReportFile,pTeamId,pUserGroup,pUserId,pUserName,sConn,gcUpdateId,;m.Date_From,m.Date_To,nConn,OFBLX,OFBLY,Times Store 0 To nConn,OFBLX,OFBLY,Times Store Date()To m.Date_From,m.Date_To Store '' To TempFile,ExePath,CurWinDir,CurPic,pCompany,ReportFile,sConn,pTeamId,pUserGroup,pUserId,pUserName TempFile='T'+Right(Sys(2015),7)CurWinDir=Getenv('WinDir')ExePath=Left(Sys(16,1),Rat(“",Sys(16,1)))Set Default To(ExePath)Set Resource To &ExePath.FoxUser.Dbf Set Path To &ExePath.;&ExePath.HelpS If!Directory(”&ExePath.Temp“)Md &ExePath.Temp Endif Tmpfiles=”&ExePath.Temp“ &&設(shè)定當(dāng)前VFP使用的臨時(shí)文件目錄

      =DelTmpFile()&&刪除當(dāng)前用戶系統(tǒng)目錄和VFP目錄的過(guò)時(shí)的臨時(shí)文件 *!* SET HELP TO &ExePath.HelpSHotel.CHM If!File('MYDLL.DLL')Messagebox('MYDLL.DLL丟失,程序不能正常運(yùn)行!',48,'系統(tǒng)提示')Quit Endif Declare String getserial In ”MyDll.dll“ Integer &&獲得硬盤廠商物理永久性的ID Declare String num2txt_c In ”MyDll.dll“ As RMBZH Double &&小寫金額轉(zhuǎn)換成大寫金額

      Declare String topy In ”MyDll.dll“ String &&漢字轉(zhuǎn)拼音首字母 Declare Integer changeres In ”MyDll.dll“ Integer, Integer &&分變率設(shè)定 Declare Integer WinExec In ”kernel32“ String,Integer Declare Integer FindWindow In Win32api String, String Declare Long BringWindowToTop In Win32API Long Declare Long ShowWindow In Win32API Long, Long Declare Integer SendMessage In user32 Integer,Integer,Integer,Integer Declare Integer ShellExecute In SHELL32.Dll Integer, String, String, String, String, Integer Declare Integer GetPrivateProfileString In Win32API As GetPrivStr String, String, String, String @, Integer, String Declare Integer WritePrivateProfileString In Win32API As WritePrivStr String, String, String, String Declare SHORT SetLocalTime In win32api String SystemTime *!* Declare integer ShowWindowAsync in user32 integer hwnd, integer nCmdShow *!* htaskbar = FindWindow(”Shell_TrayWnd“,0)*!* ShowWindowAsync(htaskbar,0)&&0為隱藏任務(wù)欄,1為顯示任務(wù)欄 Set Class To MyLibs Additive &&使用自已的類庫(kù)

      On Error Do Err_Fix With Error(),Message(),Message(1), Program(),Lineno()&&錯(cuò)誤跟蹤處理

      If!File(”&ExePath.LXJ.INI“)&&判斷配置文件存在否,不存在就創(chuàng)建。=WriteIni('REGISTRY','Local_Id',Str(DiskSpace(Sys(5),1)),'&ExePath.LXJ.INI')=WriteIni('REGISTRY','Reg_Date',Ttoc(Datetime()),'&ExePath.LXJ.INI')=WriteIni('REGISTRY',' ','======================','&ExePath.LXJ.INI')=WriteIni('AUTHOR','Contact','劉 雪 均','&ExePath.LXJ.INI')=WriteIni('AUTHOR','Title','電腦工程師','&ExePath.LXJ.INI')=WriteIni('AUTHOR','Telephone','***','&ExePath.LXJ.INI')=WriteIni('AUTHOR',' ','======================','&ExePath.LXJ.INI')=WriteIni('SCREEN','RandomLoad','Yes','&ExePath.LXJ.INI')=WriteIni('SCREEN','SourceXY','Yes','&ExePath.LXJ.INI')=WriteIni('SCREEN','Picture ','Picture.JPG','&ExePath.LXJ.INI')=WriteIni('SCREEN','StatusBar ','On','&ExePath.LXJ.INI')=WriteIni('SCREEN','','======================','&ExePath.LXJ.INI')=WriteIni('CONNECT','DRIVER','SQL SERVER','&ExePath.LXJ.INI')=WriteIni('CONNECT','SERVER',GETENV(”COMPUTERNAME“),'&ExePath.LXJ.INI')=WriteIni('CONNECT','PORTNO','1433','&ExePath.LXJ.INI')=WriteIni('CONNECT','UID','SA','&ExePath.LXJ.INI')=WriteIni('CONNECT','PWD','DBA','&ExePath.LXJ.INI')=WriteIni('CONNECT','DATABASE','HOTEL','&ExePath.LXJ.INI')=WriteIni('CONNECT',' ','======================','&ExePath.LXJ.INI')=WriteIni('USER','LastUser','Guest','&ExePath.LXJ.INI')=WriteIni('USER',' ','======================','&ExePath.LXJ.INI')=WriteIni('UPDATE','NewExe','&ExePath.Main.EXE','&ExePath.LXJ.INI')&&工作站自動(dòng)升級(jí)的共享目錄

      =WriteIni('UPDATE','NewInfo','歡迎使用本系統(tǒng)!','&ExePath.LXJ.INI')&&提示的信息

      =WriteIni('UPDATE',' ','======================','&ExePath.LXJ.INI')=WriteIni('OCXDLLREG',GETENV(”COMPUTERNAME“),'NO','&ExePath.LXJ.INI')Endif If Upper(ReadIni('SCREEN','StatusBar','&ExePath.LXJ.INI'))='ON' Set Status Bar On _vfp.StatusBar=' 歡 迎 您 使 用 本 系 統(tǒng)...' Else Set Status Bar Off Endif =OleRegister()&&根據(jù)INI文件判斷是否注冊(cè)O(shè)CX,DLL文件 =SetShortCut('酒店管理')&&在屏幕上創(chuàng)建快捷方式 *!*工作站是否注冊(cè)判斷 If ReadIni('REGISTRY','Local_Id','&ExePath.LXJ.INI')!=WorkJm(Iif(Empty(GetSerial(0)),Str(Diskspace(Sys(5),1)),Allt(GetSerial(0))),'HTL')Do Form RegWork.SCX &&調(diào)用本工作站使用注冊(cè)表單 Endif Wait Window ”正在連接 SQL SERVER 數(shù)據(jù)庫(kù),請(qǐng)稍候......“ At Srows()/2-10,(Scol()-45)/2 Nowait Noclear SQLSETPROP(0,”DispLogin“ ,3)&&連接不成功時(shí)不顯示ODBC登錄對(duì)話窗口 SQLSETPROP(0,”ConnectTimeOut“,20)&&連接超時(shí)等待秒數(shù)設(shè)置,可取值0至600 SQLSETPROP(0,”IdleTimeout“,0)&&空閑超時(shí)間隔秒數(shù),取0為無(wú)限期等待 SQLSETPROP(0,”QueryTimeOut“,20)&&超時(shí)錯(cuò)誤之前等待的時(shí)間 SQLSETPROP(0,”Asynchronous“,.F.)&&指定結(jié)果集合是同步返回 SQLSETPROP(0,”DispWarnings“,.F.)&&不顯示一個(gè)錯(cuò)誤信息 *!*從配置文件中獲得SQL SERVER的加密連接串 sConn='DRIVER=SQL SERVER' sConn=sConn+';SERVER='+Iif(Empty(ReadIni('CONNECT','SERVER','&ExePath.LXJ.INI')),GETENV(”COMPUTERNAME“),ReadIni('CONNECT','SERVER','&ExePath.LXJ.INI'))sConn=sConn+','+Iif(Empty(ReadIni('CONNECT','PORTNO','&ExePath.LXJ.INI')),'1433',ReadIni('CONNECT','PORTNO','&ExePath.LXJ.INI'))sConn=sConn+';UID='+ReadIni('CONNECT','UID','&ExePath.LXJ.INI')sConn=sConn+';PWD='+Iif(Empty(ReadIni('CONNECT','PWD','&ExePath.LXJ.INI')),'',JmWd(ReadIni('CONNECT','PWD','&ExePath.LXJ.INI')))sConn=sConn+';DATABASE='+Iif(Empty(ReadIni('CONNECT','DATABASE','&ExePath.LXJ.INI')),'NoDatabase',ReadIni('CONNECT','DATABASE','&ExePath.LXJ.INI'))sConn=sConn+';NetWork=DBMSSOCN' nConn=Sqlstringconnect(sConn)Wait Clear Do While nConn<=0 Local YN YN=Messagebox('SQL Server 數(shù)據(jù)庫(kù)連接失敗,請(qǐng)選擇!'+Chr(13)+Chr(13)+”Y->重試 , N->設(shè)定 , 取消->退出!“,67 ,'SQL Connect Info.')_Screen.Refresh Do Case Case YN=6 Wait Window ”正在連接 SQL SERVER 數(shù)據(jù)庫(kù),請(qǐng)稍候......“ At Srows()/2-10,(Scol()-45)/2 Nowait Noclear nConn=Sqlstringconnect(sConn)Wait Clear Case YN=7 Do Form SetServer.SCX &&SQL SERVER服務(wù)器連接配置 Otherwise Quit Endcase Enddo *!*下面是測(cè)試連接有效否,有效就檢測(cè)服務(wù)器注冊(cè)及過(guò)期情況等 If IsConn()=GetServerTime()&&設(shè)定當(dāng)前機(jī)器時(shí)間為服務(wù)器的時(shí)間

      If SQLEXEC(nConn,'Select * From Registry','MyCursor')>0 Select MyCursor pCompany=Alltrim(MyCursor.Corp)If Alltrim(MyCursor.RegKey)!=Alltrim(ServerJm(Dtoc(Ttod(MyCursor.EndTime))-TOPY(pCompany)-Dtoc(Ttod(MyCursor.BeginTime)),'HTL'))Do Form RegServer.SCX &&調(diào)用注冊(cè)SQL SERVER服務(wù)器使用權(quán)表單 Endif If MyCursor.BeginTime>Date()Messagebox('系統(tǒng)時(shí)間小于注冊(cè)時(shí)間,程序不可運(yùn)行!',16,'Information',3000)Quit Endif If MyCursor.EndTime

      1、使用期限快到,程序?qū)⒃?'+Alltrim(MyCursor.EndTime)+' 后終止運(yùn)行,切記!'+Chr(13)+Chr(13)+'

      2、請(qǐng)盡快同 劉雪均 聯(lián)系(E-MAIL:CQTony@tom.com),謝謝!',64 ,'系統(tǒng)提示')Endif Else Messagebox('注冊(cè)信息查詢失敗,請(qǐng)等會(huì)重試!',16,'Information',3000)=SQLDisConnect(0)Quit Endif Else Messagebox('后臺(tái)數(shù)據(jù)庫(kù)連接失敗,請(qǐng)等會(huì)重試!',16,'Information',3000)=SQLDIsConnect(0)Quit Endif If Empty(pCompany)cTitle=”【 星 級(jí) 酒 店 管 理 系 統(tǒng) 】“ Else cTitle=”【 &pCompany.---酒店管理系統(tǒng) 】“ Endif m.LNHWND=FindWindow(0,cTitle)If m.LNHWND<>0 Wait Window ”重 復(fù) 提 示 : 程 序 已 經(jīng) 運(yùn) 行!“ At Srows()/2-3,(Scol()-34)/2 Timeout 2 BringWindowToTop(m.LNHWND)ShowWindow(m.LNHWND,3)Quit Endif *!*分變率處理,如果低于800*600就修改為800*600,否則就從配置文件進(jìn)行相應(yīng)處理,程序本身有自動(dòng)適應(yīng)功能。OFBLX=Sysmetric(1)OFBLY=Sysmetric(2)If OFBLX<800 Or(Upper(ReadIni('SCREEN','SourceXY','&ExePath.LXJ.INI'))='YES' And OFBLX<>800)CHANGERES(800,600)OFBLX=800 OFBLY=600 _Screen.ScreenImg.Height=600-50 _Screen.ScreenImg.Width=800 Endif *!*下面是背景圖自動(dòng)隨機(jī)調(diào)用或是調(diào)用用戶設(shè)定的固定圖片處理

      If Upper(ReadIni('SCREEN','RandomLoad','&ExePath.LXJ.INI'))='YES' Set Default To &ExePath.PictureS FileNo=Adir(PicFile,”*.JPG“)If FileNo>0 FileNo=Int(Rand(Seconds())*FileNo)+1 CurPic =PicFile[FileNo,1] Else CurPic=ReadIni('SCREEN','Picture','&ExePath.LXJ.INI')Endif Release FileNo,PicFile,LNHWND Set Default To &ExePath.CurPic=ExePath+'PictureS'+CurPic Else CurPic=ReadIni('SCREEN','Picture','&ExePath.LXJ.INI')Endif If!File(CurPic)CurPic='DeskTopr.jpg' Endif _Screen.ScreenImg.Picture=CurPic _Screen.Caption=cTitle _Screen.Refresh Do Form Login.SCX &&運(yùn)行登錄用密碼校驗(yàn)界面 Read Events =VFP_INIT()Return Function VFP_INIT With _Screen.ZOOMBOX=.T..MinButton=.T..MaxButton=.T..BorderStyle=2.Closable=.T..Movable=.T..Icon=”“.Caption=Chr(49653)+Chr(53673)+Chr(48889)Endwith Close Databases All Close Tables All Release Windows Set Sysmenu To Default Set Sysmenu On Set Deleted Off Set Procedure To Set Exclusive On Set Multilocks Off Set Library To Set Talk On Set Escap On Set Safe On Set Exact Off Close All Clear Dlls Clear All Clear On Key On Error On Escap Return Endfunc *!*判斷連接是否存在或斷線,如不通并重新連接 Function IsConn If nConn<=0 SQLDIsConnECT(0)nConn=Sqlstringconnect(sConn)Endif Try SQLEXEC(nConn,'')Catch nConn=-1 Finally If nConn<=0 nConn=Sqlstringconnect(sConn)Endif Endtry If nConn>0 SQLEXEC(nConn,”Select GetDate()AS SysTime ,CONVERT(VARCHAR(10),GetDate(),111)AS SysDate “,'ServerDate')Return(.T.)Else Return(.F.)Endif Endfunc *!*設(shè)定當(dāng)前系統(tǒng)的時(shí)間為服務(wù)器的時(shí)間 Function GetServerTime If IsConn()Select ServerDate SystemTime = WTOS(Year(ServerDate.SysTime))+;WTOS(Month(ServerDate.SysTime))+;WTOS(Dow(ServerDate.SysTime)-1)+;WTOS(Day(ServerDate.SysTime))+;WTOS(Hour(ServerDate.SysTime))+;WTOS(Minut(ServerDate.SysTime))+;WTOS(Sec(ServerDate.SysTime))+;WTOS(Sec(ServerDate.SysTime))= SETLOCALTIME(SystemTime)Else Messagebox('后臺(tái)數(shù)據(jù)庫(kù)連接失敗,時(shí)間同步無(wú)效!',16,'Information',3000)Endif Endfunc Function WTOS Parameters WORDVAL Private IDNAME, RETSTR RETSTR = ”“ For IDNAME = 8 To 0 Step-8 RETSTR = Chr(Int(WORDVAL/(2^IDNAME)))+ RETSTR WORDVAL = Mod(WORDVAL,(2^IDNAME))Next Retu RETSTR Endfunc *!* SQL 錯(cuò)誤登記顯示自定義函數(shù) Function ShowSqlError NERRLINE=Aerror(SQLERROR)If SqlError[5]<60000 Set Textmerge Delimiters To Set Textmerge On Set Textmerge To &ExePath.ERRORSSQLERRLOG.TXT Noshow <> <> 錯(cuò)誤記錄 For I=1 To NERRLINE 錯(cuò)誤編號(hào):<> 錯(cuò)誤信息:<> ODBC 信息:<> ODBC 狀態(tài):<> ODBC 數(shù)據(jù)源錯(cuò)誤編號(hào):<> ODBC 連接句柄:<> Endfor Set Safety Off Set Textmerge To Local LCERRORLOG,LCUSER If!Directory(”&ExePath.Errors“)Md &ExePath.Errors Endif LCERRORLOG = Filetostr('&ExePath.ERRORSSQLERRLOG.txt')LCUSER=pUserId-'/'-pUserName If IsConn()SQLEXEC(nConn,'INSERT INTO SYSERROR(WORKSTATION,USERNAME,ERRORDATE,ERRORLOG)valueS(?SYS(0),?lcUSER,GETDATE(),?lcERRORLOG)')Endif Messagebox(SQLERROR[2],16,'SQL Error '+Transform(SQLERROR[1]))Else Messagebox(Right(SQLERROR[2],54),64,'SQL Error '+Transform(SQLERROR[1]))Endif Endfunc *!* 程序快捷方式自定義函數(shù) Function SetShortCut Parameters MyProcName wshshell = Createobject(”Wscript.shell“)StrDesktop = wshshell.specialfolders(”Desktop“)oMyShortcut = wshshell.createshortcut(strdesktop + ”&MyProcName..lnk“)oMyShortcut.windowstyle = 4 &&Maximized 7=Minimized 4=Normal oMyShortcut.iconlocation = ”&ExePath.Loader.EXE“ oMyShortcut.targetpath = ”&ExePath.Loader.EXE“ oMyShortcut.workingdirectory = ExePath oMyShortcut.Save Release wshshell Endfunc *!* 動(dòng)態(tài)SQL 查詢條件中的特殊符號(hào)‘和“的處理函數(shù) Function DelStr Parameters lsCurStr lsCurStr=Strtran(lsCurStr, ”'“, '')lsCurStr=Alltrim(Strtran(lsCurStr, '”', ''))Return(lsCurStr)Endfunc *!* 更新站點(diǎn)唯一ID獲得函數(shù),以當(dāng)前用戶的機(jī)器名+系統(tǒng)登錄名+系統(tǒng)日期時(shí)間到毫秒+本程序的用戶編號(hào) Function GetUserId Local gcUpdateId Set Seconds On gcUpdateId=Strtran(Sys(0)+'|'+Right(Strtran(Ttoc(Datetime()),'/',''),15)+'|'+Alltrim(pUserId),' ','')If Len(gcUpdateID)>46 gcUpdateID=Right(gcUpdateID,46)Endif Set Seconds Off Return(gcUpdateId)Endfunc *!* 日期或字符串轉(zhuǎn)換為日期型或者NULL,目的是為了適應(yīng)后臺(tái)SQL SERVER的格式,方便處理 Function DC2D Parameters lsCDStr Do Case Case Vartype(lsCDStr)='C' lsCDStr=Alltrim(lsCDStr)lsCDStr=Ctod(lsCDStr)If Empty(lsCDStr)Return(.Null.)Else Return(lsCDStr)Endif Case Vartype(lsCDStr)='D' If Empty(lsCDStr)Return(.Null.)Else Return(lsCDStr)Endif Otherwise Return(.Null.)Endcase Endfunc *!* 日期或字符串轉(zhuǎn)換為字符或NULL,目的是為了適應(yīng)前臺(tái)的格式,方便處理SQL SERVER調(diào)的數(shù)據(jù) Function DC2C Parameters lsDCStr Do Case Case Vartype(lsDCStr)='C' lsDCStr=Alltrim(lsDCStr)If Empty(lsDCStr)Return(.Null.)Else Return(lsDCStr)Endif Case Vartype(lsDCStr)='D' lsDCStr=Dtoc(lsDCStr)If Empty(lsDCStr)Return(.Null.)Else Return(lsDCStr)Endif Otherwise Return(.Null.)Endcase Endfunc *!* 刪除當(dāng)前系統(tǒng)用戶臨時(shí)目錄過(guò)時(shí)的臨時(shí)文件,因?yàn)橄到y(tǒng)有些臨時(shí)文件是不會(huì)自動(dòng)刪除的

      Function DelTmpFile *!*Windows系統(tǒng)臨時(shí)目錄

      gNo = Adir(gFile, GETENV(“TEMP”)+'*.TMP')For I=1 To gNo nHand=Fopen(GETENV(“TEMP”)+''+gFile(I,1),12)If nHand!=-1 And FDATE(GETENV(“TEMP”)+''+gFile(I,1))!=Date()=Fclose(nHand)Delete File GETENV(“TEMP”)+''+gFile(I,1)Endif Endfor *!*當(dāng)前程序臨時(shí)目錄

      gNo = Adir(gFile, '&ExePath.Temp*.*')For I=1 To gNo nHand=Fopen('&ExePath.Temp'+gFile(I,1),12)If nHand!=-1 And FDATE('&ExePath.Temp'+gFile(I,1))!=Date()=Fclose(nHand)Delete File '&ExePath.Temp'+gFile(I,1)Endif Endfor Release gFile,nHand,gNo Endfunc *!* 工作站第一次運(yùn)行的時(shí)候注冊(cè)本程序目錄下的控件 Function OleRegister If ALLTRIM(Upper(ReadIni('OCXDLLREG',GETENV(“COMPUTERNAME”),'&ExePath.LXJ.INI')))!='YES' IF FILE(“&EXEPATH.MSCOMCTL.OCX”)WINEXEC(“REGSVR32 &EXEPATH.MSCOMCTL.OCX /S”,0)ENDIF IF FILE(“&EXEPATH.MSCOMCT2.OCX”)WINEXEC(“REGSVR32 &EXEPATH.MSCOMCT2.OCX /S”,0)ENDIF IF FILE(“&EXEPATH.MSMAPI32.OCX”)WINEXEC(“REGSVR32 &EXEPATH.MSMAPI32.OCX /S”,0)ENDIF IF FILE(“&EXEPATH.RICHTX32.OCX”)WINEXEC(“REGSVR32 &EXEPATH.RICHTX32.OCX /S”,0)ENDIF IF FILE(“&EXEPATH.MSWINSCK.OCX”)WINEXEC(“REGSVR32 &EXEPATH.MSWINSCK.OCX /S”,0)ENDIF IF FILE(“&EXEPATH.MSCOMM32.OCX”)WINEXEC(“REGSVR32 &EXEPATH.MSCOMM32.OCX /S”,0)ENDIF =WriteIni('OCXDLLREG',GETENV(“COMPUTERNAME”),'YES','&ExePath.LXJ.INI')Endif Endfunc *********因本程序所有的字符串加密目前采用MD5校驗(yàn),故把原有的加密函數(shù)也貼出來(lái)貢獻(xiàn)給大家參考。

      *!* ***工作站安裝加密 Function WorkJm Para YourId,JmStr YourId=JmStr-Upper(Alltrim(YourId))Local CurrentId CurrentId='' For IdName=1 To Len(YourId)Step 2 CurrentId=CurrentId+Subst(YourId,Len(YourId)-IdName,1)Endfor For IdName=0 To Len(YourId)Step 2 CurrentId=CurrentId+Subst(YourId,Len(YourId)-IdName,1)Endfor YourId=CurrentId CurrentId='' For IdName=1 To Len(YourId)CurrentId=CurrentId+Chr(Bitxor(Asc(Subst(YourId,IdName,1)),IdName))Endfor Return(CurrentId)Endfunc ***系統(tǒng)使用期限加密 Function ServerJm Para GetSd,JmStr GetSd=JmStr-Upper(Allt(GetSd))Local CurSd CurSd='' For IdName=0 To Len(GetSd)Step 2 CurSd=CurSd+Subst(GetSd,Len(GetSd)-IdName,1)Endfor For IdName=1 To Len(GetSd)Step 2 CurSd=CurSd+Subst(GetSd,Len(GetSd)-IdName,1)Endfor GetSd=CurSd CurSd='' For IdName=1 To Len(GetSd)CurSd=CurSd+Chr(Bitxor(Asc(Subst(GetSd,IdName,1)),IdName))Endfor Return(CurSd)Endfunc 有人找我關(guān)于程序中的讀寫INI的函數(shù),其實(shí)以前早發(fā)過(guò)了,為了方便大家,就一起貼出來(lái)吧!API的定義在前面。Function ReadIni PARAMETERS lcHeader, lcCentry,lcFile Private lcBuffer lnBufferSize = 128 lcBuffer = Space(lnBufferSize)+Chr(0)=GETPRIVSTR(lcHeader, lcCentry, “", @lcBuffer, Len(lcBuffer),lcFile)lcBuffer = Alltrim(Left(lcBuffer, lnBufferSize))Return Left(lcBuffer, Len(lcBuffer)-1)Endfunc Procedure WriteIni PARAMETERS lcHeader, lcCentry, LCvalue,lcFile =WRITEPRIVSTR(lcHeader, lcCentry, LCvalue, lcFile)Return Endproc

      VFP編程:VFP報(bào)表數(shù)據(jù)分組 在設(shè)計(jì)報(bào)表時(shí),有時(shí)所要報(bào)表的數(shù)據(jù)是成組出現(xiàn)的,需要以組為單位對(duì)報(bào)表進(jìn)行處理。例如在教師花名冊(cè)時(shí),為閱讀方便,需要按所在部門或職稱進(jìn)行分組。利用分組可以明顯地分隔每組記錄,使數(shù)據(jù)以組的形式顯示。組的分隔是根據(jù)分組表達(dá)式進(jìn)行的,這個(gè)表達(dá)式通常由一個(gè)以上的表字段生成,有時(shí)也可以相當(dāng)復(fù)雜??梢蕴砑右粋€(gè)或多個(gè)組、更改組的順序、重復(fù)組標(biāo)頭或者更改、刪除組帶區(qū)。

      分組之后,報(bào)表布局就有了組標(biāo)頭和組注腳帶區(qū),可以向其中添加控件。組標(biāo)頭帶區(qū)中一般都包含組所用字段的“域控件”,可以添加線條、矩形、圓角矩形,也可以添加希望出現(xiàn)在組內(nèi)第一條記錄之前的任何標(biāo)簽。組注腳通常包含組總計(jì)和其他組總結(jié)性信息。

      報(bào)表布局實(shí)際上并不排序數(shù)據(jù),它只是按它們?cè)跀?shù)據(jù)源中存在的順序處理數(shù)據(jù)。因此,如果數(shù)據(jù)源是表,記錄的順序不一定適合于分組。當(dāng)設(shè)置索引的 表、視圖或查詢作為數(shù)據(jù)源時(shí),可以把數(shù)據(jù)適當(dāng)排序來(lái)分組顯示記錄。排序必須使用視圖、索引或布局外的其他形式的數(shù)據(jù)操作來(lái)完成。

      1.添加單個(gè)數(shù)據(jù)分組

      一個(gè)單組報(bào)表可以基于輸入表達(dá)式進(jìn)行一級(jí)數(shù)據(jù)分組。例如,對(duì)教師表按字段排序后,可以把組設(shè)在“職稱”字段上來(lái)打印所有記錄,相同職稱的記錄在一起打印。

      添加單個(gè)數(shù)據(jù)分組的步驟如下:

      從快捷菜單或“報(bào)表”菜單中,選擇“數(shù)據(jù)分組”。出現(xiàn)“數(shù)據(jù)分組”對(duì)話框。

      (1)這里的屬性設(shè)置包括打印標(biāo)頭和注腳文本來(lái)區(qū)別各組,在新的一頁(yè)上打印每一組,當(dāng)某組在新頁(yè)上開始打印時(shí),重置頁(yè)號(hào)。

      對(duì)話框選項(xiàng)意義如下:

      ①分組表達(dá)式。顯示當(dāng)前報(bào)表的分組表達(dá)式,如字段名,并允許輸入新的字段名。如果想創(chuàng)建一個(gè)新的表達(dá)式,可選擇對(duì)話按鈕,顯示“表達(dá)式生成器”對(duì)話框。

      ②組屬性。此屬性用以指定如何分頁(yè)。

      ③每組從新的一列上開始。當(dāng)組改變時(shí),從新的一列上開始。

      ④每組從新的一頁(yè)上開始。當(dāng)組改變時(shí),從新的一頁(yè)上開始。

      ⑤每組的頁(yè)號(hào)重新從1開始。當(dāng)組改變時(shí),組在新頁(yè)上開始打印,并重置頁(yè)號(hào)。

      ⑥每頁(yè)都打印組標(biāo)頭。當(dāng)組分布在多頁(yè)上時(shí),指定在所有頁(yè)的頁(yè)標(biāo)頭后打印組標(biāo)頭。

      ⑦小于右值時(shí)組從新的一頁(yè)上開始。要打印組標(biāo)頭時(shí),組標(biāo)頭距頁(yè)底的最小距離。

      ⑧插入。在“分組表達(dá)式”框中插入一個(gè)空文本框,以便定義新的分組表達(dá)式。

      ⑨刪除。從“分組表達(dá)式”框中刪除選定的分組表達(dá)式。

      (2)在第一個(gè)“分組表達(dá)式”框內(nèi)鍵人分組表達(dá)式。或者選擇對(duì)話按鈕,在“表達(dá)式生成器”對(duì)話框中創(chuàng)建表達(dá)式。

      (3)在“組屬性”區(qū)域,選定想要的屬性。

      (4)選擇“確定”按鈕。

      添加表達(dá)式后,可以在帶區(qū)內(nèi)放置任意需要的控件。通常,把分組所用的域控件從“細(xì)節(jié)”帶區(qū)移動(dòng)到“組標(biāo)頭”帶區(qū)。

      2.添加多個(gè)數(shù)據(jù)分組

      有時(shí)需要對(duì)報(bào)表進(jìn)行多個(gè)數(shù)據(jù)分組,如在打印教師花名冊(cè)時(shí)在用“所在部門”分組的基礎(chǔ)上,還想按職稱分組,這也稱為嵌套分組。嵌套分組有助于組織不同層次的數(shù)據(jù)和總計(jì)表達(dá)式。在報(bào)表內(nèi)最多可以定義20級(jí)的數(shù)據(jù)分組。

      添加多個(gè)數(shù)據(jù)分組步驟如下:

      (1)從“報(bào)表”菜單中,選擇“數(shù)據(jù)分組”。出現(xiàn)“數(shù)據(jù)分組”對(duì)話框。

      (2)在第一個(gè)“分組表達(dá)式”框內(nèi)鍵人分組表達(dá)式?;蛘哌x擇對(duì)話按鈕,在“表達(dá)式生成器”對(duì)話框中創(chuàng)建表達(dá)式。

      (3)在“組屬性”區(qū)域,選擇所需的屬性。

      (4)選擇“插入”并且對(duì)每個(gè)分組表達(dá)式重復(fù)2、3步。

      (5)選擇“確定”按鈕。

      注意:在選擇一個(gè)分組層次時(shí),要先估計(jì)一下分組值的可能更改的頻度,然后定義最經(jīng)常更改的組為第一層。例如,報(bào)表可能需要一個(gè)按省份的分組和一 個(gè)按城市的分組。城市字段的值比省份字段更易更改,因此,城市應(yīng)該是兩個(gè)組中的第一個(gè),省份就是第二個(gè)。在這個(gè)多組報(bào)表內(nèi),表必須在一個(gè)關(guān)鍵值表達(dá)式上排 序或索引過(guò),例如:省份+城市。

      還可以對(duì)添加的單個(gè)或多個(gè)數(shù)據(jù)組進(jìn)行更改分組設(shè)置,包括更改組帶區(qū)、刪除組帶區(qū)、更改分組次序等操作。

      VFP編程:VFP報(bào)表輸出

      設(shè)計(jì)報(bào)表的最終目的是要按照一定的格式輸出符合要求的數(shù)據(jù)。報(bào)表文件的擴(kuò)展名為.frx,該文件存儲(chǔ)報(bào)表設(shè)計(jì)的詳細(xì)說(shuō)明。每個(gè)報(bào)表文件還帶有擴(kuò)展名為.frt的報(bào)表文件。報(bào)表文件不存儲(chǔ)每個(gè)數(shù)據(jù)字段的值,只存儲(chǔ)數(shù)據(jù)源的位置和格式信息。

      報(bào)表文件按數(shù)據(jù)源中記錄出現(xiàn)的順序處理記錄,如果直接使用表內(nèi)的數(shù)據(jù),數(shù)據(jù)就不會(huì)在布局內(nèi)正確地按組排序。因此,在打印一個(gè)報(bào)表文件之前,應(yīng)確認(rèn)數(shù)據(jù)源中已對(duì)數(shù)據(jù)進(jìn)行了正確排序。一般,建議報(bào)表的數(shù)據(jù)源使用視圖或查詢文件。

      報(bào)表輸出時(shí),應(yīng)該先進(jìn)行頁(yè)面設(shè)置,通過(guò)預(yù)覽報(bào)表調(diào)整版面效果,最后再打印輸出到紙介質(zhì)上。

      1.頁(yè)面設(shè)置

      規(guī)劃報(bào)表時(shí),通常會(huì)考慮頁(yè)面的外觀。例如頁(yè)邊距,紙張類型和所需的布局。在“頁(yè)面設(shè)置”對(duì)話框中可以設(shè)置報(bào)表的左邊距并為多列報(bào)表設(shè)置列寬和列間距,設(shè)置紙張大小和方向,步驟如下:

      (1)從“文件”菜單中,選擇“頁(yè)面設(shè)置”,出現(xiàn)“頁(yè)面設(shè)置”對(duì)話框。

      (2)在“左頁(yè)邊距”框中輸入一個(gè)邊距數(shù)值。頁(yè)面布局將按新的頁(yè)邊距顯示。

      (3)若要選擇紙張大小,選擇“打印設(shè)置”。

      (4)在“打印設(shè)置”對(duì)話框中,從“大小”列表中選定紙張大小。

      (5)若要選擇紙張方向,從“方向”區(qū)選擇一種方向,再選擇“確定”。

      (6)在“頁(yè)面設(shè)置”對(duì)話框中,選擇“確定”。

      在更改了紙張的大小和方向設(shè)置時(shí),需要注意該紙張大小是否可以設(shè)置所選的方向。例如,如果紙張定為信封,則方向必須設(shè)置為橫向。

      2.預(yù)覽報(bào)表

      通過(guò)預(yù)覽報(bào)表,不用打印就能看到它的頁(yè)面外觀。例如,可以檢查數(shù)據(jù)列的對(duì)齊和間隔,或者查看報(bào)表是否返回所需的數(shù)據(jù)。有兩個(gè)選擇:顯示整個(gè)頁(yè)面或者縮小到一部分頁(yè)面。

      “預(yù)覽”窗口有它自己的工具欄,使用其中的按鈕可以逐頁(yè)地進(jìn)行預(yù)覽。步驟如下:

      (1)從“顯示”菜單中選擇“預(yù)覽”命令,或在“報(bào)表設(shè)計(jì)器”中單擊鼠標(biāo)右鍵并從彈出的快捷菜單中選擇“預(yù)覽”命令,也可以直接單擊“常用”工具欄中的“打印預(yù)覽”按鈕。

      (2)在打印預(yù)覽工具欄中,選擇“上一頁(yè)”或“前一頁(yè)”來(lái)切換頁(yè)面。

      (3)若要更改報(bào)表圖象的大小,選擇“縮放”列表。

      (4)若要打印報(bào)表,選擇“打印報(bào)表”按鈕。

      (5)若想要返回到設(shè)計(jì)狀態(tài),選擇“關(guān)閉預(yù)覽”按鈕。

      注意:如果得到如下提示“是否將所做更改保存到文件?”那么,在選定關(guān)閉“預(yù)覽”窗口時(shí)一定還選取了關(guān)閉布局文件。此時(shí)可以選定“取消”按鈕回到“預(yù)覽”,或者選定“保存”按鈕保存所做更改并關(guān)閉文件。如果選定了“否”,將不保存對(duì)布局所做的任何更改。

      3.打印輸出

      使用報(bào)表設(shè)計(jì)器創(chuàng)建的報(bào)表布局文件只是一個(gè)外殼,它把要打印的數(shù)據(jù)組織成令人滿意的格式。如果使用預(yù)覽報(bào)表,在屏幕上獲得最終符合設(shè)計(jì)要求的頁(yè)面后,就要打印出來(lái)。步驟如下:

      (1)從“文件”菜單中選擇“打印”命令,或在報(bào)表設(shè)計(jì)器中單擊鼠標(biāo)右鍵并從彈出的快捷菜單中選擇“打印”命令,也可以直接單擊“常用”工具欄中的“運(yùn)行”按鈕,出現(xiàn)“打印”對(duì)話框。

      (2)在“打印”對(duì)話框中,設(shè)置合適的打印機(jī)、打印范圍、打印份數(shù)等項(xiàng)目,通過(guò)“屬性”設(shè)置打印紙張的尺寸、打印精度等。

      (3)選擇“確定”按鈕。Visual FoxPro就會(huì)把報(bào)表發(fā)送到打印機(jī)上。

      如果未設(shè)置數(shù)據(jù)環(huán)境,則會(huì)顯示“打開”對(duì)話框,并在其中列出一些表,從中可以選定要進(jìn)行操作的一個(gè)表。

      在命令窗口或程序中使用REPORT FORM(報(bào)表文件名>[PREVIEw]命令也可以打印或預(yù)覽指定的報(bào)表。

      VFP編程:VFP標(biāo)簽設(shè)計(jì)

      標(biāo)簽是一種特殊的報(bào)表,它的創(chuàng)建、修改方法與報(bào)表基本相同。和創(chuàng)建報(bào)表一樣,可以使 用標(biāo)簽向?qū)?chuàng)建標(biāo)簽,也可以直接使用標(biāo)簽設(shè)計(jì)器創(chuàng)建標(biāo)簽。無(wú)論使用哪種方法來(lái)創(chuàng)建標(biāo)簽,都必須指明使用的標(biāo)簽類型,它確定了標(biāo)簽設(shè)計(jì)器中的“細(xì)節(jié)”尺寸。標(biāo)簽設(shè)計(jì)器是報(bào)表設(shè)計(jì) 器的一部分,它們使用相同的工具菜單和工具欄,甚至有的界面名稱都一樣。主要的不同是標(biāo) 簽設(shè)計(jì)器基于所選標(biāo)簽的大小自動(dòng)定義頁(yè)面和列。

      若要快速創(chuàng)建一個(gè)簡(jiǎn)單的標(biāo)簽布局,可以和報(bào)表設(shè)計(jì)器中那樣在“報(bào)表”菜單中選擇“快速 報(bào)表”命令?!翱焖賵?bào)表”提示輸入創(chuàng)建標(biāo)簽所需的字段和布局。這里只簡(jiǎn)要介紹一下如何用標(biāo)簽設(shè)計(jì)器創(chuàng)建標(biāo)簽。

      在“文件”菜單中選擇“新建”,在“新建’’對(duì)話框中選定“標(biāo)簽”并單擊“新建文件’’按鈕。顯示“新建標(biāo)簽”對(duì)話框。標(biāo)準(zhǔn)標(biāo)簽紙張選項(xiàng)出現(xiàn)在“新建標(biāo)簽”對(duì)話框中.列表框中提供了幾十種型號(hào)的標(biāo)簽,每種型號(hào)的后面列出了其高度、寬度和列數(shù)。標(biāo)簽向?qū)峁┝硕喾N標(biāo)簽尺寸,分為英制和公制兩種。

      從“新建標(biāo)簽”對(duì)話框中,選擇標(biāo)簽布局,然后選定“確定”按鈕,出現(xiàn)標(biāo)簽設(shè)計(jì)器窗口。

      標(biāo)簽設(shè)計(jì)器將出現(xiàn)剛選擇的標(biāo)簽布局所定義的頁(yè)面,默認(rèn)情況下,標(biāo)簽設(shè)計(jì)器顯示5個(gè)報(bào)表帶區(qū):頁(yè)標(biāo)頭、列標(biāo)頭、細(xì)節(jié)、列注腳和頁(yè)注腳,還可在標(biāo)簽上添加組標(biāo)頭、組注、腳標(biāo)題、總結(jié)帶區(qū)。

      接著就可以像處理報(bào)表一樣在標(biāo)簽設(shè)計(jì)器中給標(biāo)簽指定數(shù)據(jù)源并插入控件。

      VFP中BROWSE語(yǔ)句的妙用

      運(yùn)用BROWSE語(yǔ)句進(jìn)行查詢時(shí),常常會(huì)碰到這樣的情況:由于字段太多或者太長(zhǎng),一屏往往放不下。如果要查超過(guò)一屏的部分,只能用回車鍵一個(gè)字段 一個(gè)字段地移,當(dāng)后面的字段移入屏幕時(shí),前面的字段就移出屏幕。但用戶有時(shí)可能需要在屏幕上保持某些信息,例如姓名,當(dāng)其它字段移入或移出屏幕時(shí)它們應(yīng)該 始終出現(xiàn)在屏幕上。

      BROWSE提供了LOCK選項(xiàng)完成這一功能。但這樣一來(lái),BROWSE窗口被分割成左右兩部分,不好看。而且,只能一個(gè)字段一個(gè)字段地移,很不方便。

      筆者設(shè)計(jì)了一種方法,能巧妙實(shí)現(xiàn)BROWSE語(yǔ)句的左右翻屏。

      實(shí)現(xiàn)方法是定義二個(gè)功能鍵F5、F6,F(xiàn)6進(jìn)行左移,F(xiàn)5進(jìn)行右移,當(dāng)功能鍵被觸發(fā)時(shí)執(zhí)行KEYBOARD CHR(23)語(yǔ)句,相當(dāng)于按了CTRL+W鍵,退出當(dāng)前BROWSE,然后再重新定義另一個(gè)BROWSE。

      用上述方法完全退出BROWSE,避免了BROWSE的嵌套問(wèn)題。否則,切換來(lái)切換去,嵌套一深,容易出問(wèn)題。

      上述方法操作方便,而且對(duì)用戶是完全透明的。下面舉一例子說(shuō)明。人事檔案數(shù)據(jù)庫(kù)包括姓名、性別、出生日期、職務(wù)、職稱、黨派、籍貫、所屬部門、家庭地址、郵編、聯(lián)系電話、備注等數(shù)據(jù)項(xiàng),查詢時(shí)一屏顯示不下,于是分兩屏顯示,第一屏為:

      ┌────┬──┬────┬────┬─────┬───┬────┬─────┐

      │ 姓 名 │性別│出生日期│ 職 務(wù) │ 職 稱 │ 黨派 │ 籍 貫 │ 所屬部門 │

      ├────┼──┼────┼────┼─────┼───┼────┼─────┤

      │ 張 三 │ 男 │70.01.28│ │ 工程師 │共產(chǎn)黨│上海 │軟件一室 │ │ 李 四 │ 女 │58.12.01│副所長(zhǎng) │高級(jí)工程師│ │廣東廣州│ │

      │ 王 五 │ 男 │44.03.12│室主任 │副研究員 │民盟 │北京 │軟件二室 │

      │.....│..│......│....│.....│...│....│.......│ │.....│..│......│....│.....│...│....│.......│ │.....│..│......│....│.....│...│....│.......│ └────┴──┴────┴────┴─────┴───┴────┴─────┘

      按F6鍵后切換為第二屏,第二屏為:

      ┌────┬───────────┬───┬───────┬─────────┐

      │ 姓 名 │ 家庭地址 │郵 編 │ 聯(lián)系電話 │ 備 注 │

      ├────┼───────────┼───┼───────┼─────────┤

      │ 張 三 │廣州市天河路34號(hào) │510075│87769602-3806 │全國(guó)勞動(dòng)模范 │ │ 李 四 │廣州市天河路34號(hào)311房 │510075│87769602-3706 │ │ │ 王 五 │廣州市解放路14號(hào)301房 │510043│88888888 │學(xué)術(shù)委員會(huì)委員 │

      │.....│..│.....│....│.....│ │.....│..│.....│....│.....│ │.....│..│.....│....│.....│ 泤程序如下:

      USE person @0,26 SAY ”人員基本情況瀏覽“ DEFINE WINDOW CONTENT FROM 2,0 TO 22,79 FOOTER ” Esc--退出,F5--左翻,F6--右翻 “ ACTIVATE WINDOW content ON KEY LABEL F5 DO pan WITH ”F5“ ON KEY LABEL F6 DO pan WITH ”F6“ con_var=1 DO WHILE.T.DO CASE CASE con_var=0 EXIT CASE con_var=1 DO right CASE con_var=2 DO left ENDCASE ENDDO NOTE 定義一個(gè)控制變量con_var,con_var為1時(shí)為預(yù)設(shè)狀態(tài),顯示第一屏; NOTE 按F6鍵時(shí)con_var為2,顯示第二屏; NOTE 按ESC鍵時(shí)con_var為0,退出。ON KEY LABEL F5 ON KEY LABEL F6 USE RELEASE WINDOW content RETURN

      PROC pan PARA con KEYBOARD CHR(23)DO CASE CASE con=”F5“ con_var=1 CASE con=”F6“ con_var=2 ENDCASE RETURN PROC left BROW FIELDS name:H=”姓名“,sex:H=”性別“,birth:H=”出生日期“,leader:H=”職務(wù)“,;profess:H=”職稱“,party:H=”黨派“,native:h=”籍貫“,dept:h=”所屬部門“;IN WINDOW content NODELETE NOAPPEND NOEDIT COLOR SCHEME 10 IF LASTKEY()=27 con_var=0 ENDIF RETURN PROC right BROW FIELDS name:H=”姓名“,address:H=”家庭地址“,zip:H=”郵編“,telephone:H=”電話“;note:H=”備注“;IN WINDOW content NODELETE NOEDIT NOAPPEND COLOR SCHEME 10 IF LASTKEY()=27 con_var=0 ENDIF RETURN

      VFP進(jìn)行分布式查詢

      Microsoft SQL Server 7.0 提供了執(zhí)行基于 OLE DB providers 的查詢的能力.這是靠使用 OpenQuery 或 OpenRowset Transact-SQL 函數(shù)或使用包含一個(gè)已連接名四部查詢來(lái)執(zhí)行的.例如:

      sp_addlinkedserver ’mylinkedserver’, ’product_name’, ’myoledbprovider’, ’data_source’,’location’, ’provider_string’, ’catalog’

      Select * FROM OPENQUERY(mylinkedserver, ’select * from table1’)

      可以用 Microsoft OLE DB provider for ODBC(MSDASQL)和 Visual FoxPro ODBC driver 來(lái)設(shè)置一個(gè)已連接服務(wù)器(linked server)來(lái)執(zhí)行基于

      FoxPro.dbc 和.dbf 文件的分布式查詢.不支持用 Jet OLEDB Provider 和 FoxPro.以下 T-SQL 示例代碼演示如何用 OpenQuery 和 OpenRowset 函數(shù)設(shè)置和使用分布式查詢 FoxPro.它也演示了如何從 SQL Server 更新一個(gè)遠(yuǎn)程

      FoxPro 表.你可以在一個(gè) SQL Server 7.0 機(jī)器上安裝了 Visual FoxPro ODBC driver 后, 在 SQL Query Analyzer 中測(cè)試這些代碼.你需要改變數(shù)據(jù)源名和路徑到適當(dāng)?shù)?FoxPro 文件:

      /* OPENROWSET 和 OPENQUERY 示例.以 VFP 通過(guò) ODBC OLE DB provider */

      /* 這些 OPENROWSET 示例依賴于示例文件 VFP98dataTestdata.dbc

      如果你的數(shù)據(jù)在不同的位置請(qǐng)修改你的代碼 */

      --======--使用 DBC 文件 , 讀和更新

      --======--OPENROWSET DSN-less 示例

      select * from openrowset(’MSDASQL’, ’Driver=Microsoft Visual FoxPro Driver;SourceDB=e:VFP98dataTestdata.dbc;SourceType=DBC’,’select * from customer where country!= ”USA“ order by country’)go select * from openrowset(’MSDASQL’, ’Driver=Microsoft Visual FoxPro Driver;SourceDB=e:VFP98dataTestdata.dbc;SourceType=DBC’,’select * from customer where region=”WA“’)go Update openrowset(’MSDASQL’,’Driver=Microsoft Visual FoxPro Driver;SourceDB=e:VFP98dataTestdata.dbc;SourceType=DBC’,’select * from customer where region=”WA“’)set region = ”Seattle“ go

      --check to verify which rows were updated

      select * from openrowset(’MSDASQL’,’Driver=Microsoft Visual FoxPro Driver;

      SourceDB=e:VFP98dataTestdata.dbc;

      SourceType=DBC’,’select * from customer where region=”Seattle“’)

      go

      --OPENROWSET DSN 示例

      /* 注意:如果 SQL Server 是配置為使用本地帳號(hào) DSN 示例可能失敗.*/ select * from openrowset(’MSDASQL’, ’DSN=Visual FoxPro Database;

      SourceDB=e:VFP98dataTestdata.dbc;SourceType=DBC’,’select * from customer where country!= ”USA“ order by country’)go

      /* sp_addlinkedserver 示例 */

      --sp_addlinkedserver example with DSN

      /* 你需要生成一個(gè) DSN 并使它指向 Testdata 數(shù)據(jù)庫(kù).修改你的代碼以反映 DBC 位置 */

      /* 注意:如果 SQL Server 是配置為使用本地帳號(hào) DSN 示例可能失敗.*/ sp_addlinkedserver ’VFP Testdata Database With DSN’, ’’,’MSDASQL’,’VFP System DSN’ go

      sp_addlinkedsrvlogin ’VFP Testdata Database With DSN’, FALSE, NULL, NULL, NULL

      go

      Select *

      FROM OPENQUERY([VFP Testdata Database With DSN], ’select * from customer where region = ”Seattle“ ’)

      go

      --Update using OpenQuery

      Update OPENQUERY([VFP Testdata Database With DSN], ’select * from customer where region=”WA“’)

      set region = ”Seattle“

      go

      /* SP_addlinkedserver example with DSN-less connection */

      /* This example also depends on the sample files Testdata.dbc

      Modify your code accordingly for differences in location or DBC name */

      sp_addlinkedserver ’VFP Testdata Database With No DSN’,’’,’MSDASQL’,NULL,NULL,’Driver={Microsoft Visual FoxPro Driver};UID=;PWD=;SourceDB=e:VFP98dataTestdata.dbc;SourceType=DBC;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;’

      go

      sp_addlinkedsrvlogin ’VFP Testdata Database With No DSN’, FALSE, NULL, NULL, NULL

      go

      Select *

      FROM OPENQUERY([VFP Testdata Database With No DSN], ’select * from customer where country!= ”USA“ order by country’)go

      --======

      --使用 VFP 6.0 driver, read and update data from VFP sample dbf files

      --======

      --OPENROWSET DSN-less example

      select * from openrowset(’MSDASQL’, ’Driver=Microsoft Visual FoxPro Driver;SourceDB=e:VFP98data;SourceType=DBF’,’select * from customer where country!= ”USA“ order by country’)go

      --perform Update

      Update openrowset(’MSDASQL’,’Driver=Microsoft Visual FoxPro Driver;SourceDB=e:VFP98data;SourceType=DBF’,’select * from customer where region=”Seattle“’)set region = ”WA“ go

      --verify update

      select * from openrowset(’MSDASQL’, ’Driver=Microsoft Visual FoxPro Driver;SourceDB=e:VFP98data;SourceType=DBF’,’select * from customer where region = ”WA“’)go

      --OPENROWSET DSN example

      --DSN points to the folder where.dbf files are./* Note this Example may fail if SQL Server is configured to use a local account.*/

      select * from openrowset(’MSDASQL’,’DSN=Visual FoxPro Tables;

      SourceDB=e:VFP98data;

      SourceType=DBF’,’select * from customer where country!= ”USA“ order by country’)

      go VisualFoxpro報(bào)表打印程序代碼

      數(shù)據(jù)庫(kù)報(bào)表程序是經(jīng)常使用的,現(xiàn)在很多用戶都使用報(bào)表設(shè)計(jì)器設(shè)計(jì)報(bào)表,且簡(jiǎn)單方便;但筆者在工作中遇到要對(duì)成百個(gè)數(shù)據(jù)庫(kù)打印的情況,這些數(shù)據(jù)庫(kù)除了字段名不相同外,其他結(jié)構(gòu)信息基本相同,因此筆者就編制了如下的一個(gè)通用程序,供同行參考。set talk off hh1=printstatus()set print on do while.not.hh1 ?”打印機(jī)未準(zhǔn)備好,請(qǐng)準(zhǔn)備好打印機(jī)“ hh1=printstatus()enddo set talk off set device to print clear a1=getfile(”dbf“)&&打開打開文件對(duì)話框 use ”&a1“ &&打開指定的文件

      n1=fcount()&&獲取打開的庫(kù)中的字段數(shù)

      dimension a(n1)&&定義一個(gè)存放字段名的數(shù)組 dimension b(n1)&&定義一個(gè)存放字段寬度的數(shù)組 k=1 do while k<=n1 a(k)=field(k)k=k+1 enddo &&將字段名賦給數(shù)組 w=1 do while w<=n1 b(w)=fsize(a(w))&&獲取字段的長(zhǎng)度

      if b(w)<6

      b(w)=8 else

      b(w)=b(w)+2 endif w=w+1 enddo do while not eof()r1=1 &&顯示表頭的第一行

      m=1 col1=1 do while m<=n1

      if m=1

      @r1,col1 say ”┌“+replicate(”-“,b(m))

      else

      if m=n1

      @r1,col1 say ”┬“+replicate(”-“,b(m))+”┐“

      else

      @r1,col1 say ”┬“+replicate(”-“,b(m))

      endif

      endif

      col1=col1+b(m)

      m=m+1 enddo m=1 &&顯示字段名行 col1=1 do while m<=n1 if m=1

      @r1+1,col1 say ”∣“+substr(a(m),1,6)+replicate(” “,(b(m)-len(a(m))))else

      if m=n1

      @r1+1,col1 say ”∣“+substr(a(m),1,6)+replicate(” “,(b(m)-len(substr(a(m),1,6))))+”∣“

      else

      @r1+1,col1 say ”∣“+substr(a(m),1,6)+replicate(” “,(b(m)-len(substr(a(m),1,6))))

      endif endif col1=col1+b(m)m=m+1 enddo m=1 &&由于字段多,一行不能完全顯示整個(gè)行,因此分為兩行顯示字段名行 col1=1 do while m<=n1 if m=1

      @r1+2,col1 say ”∣“+substr(a(m),7)

      else

      if m=n1

      @r1+2,col1 say ”∣“+substr(a(m),7)+replicate(” “,(b(m)-len(substr(a(m),7))))+”∣“

      else

      @r1+2,col1 say ”∣“+substr(a(m),7)

      endif endif col1=col1+b(m)m=m+1 enddo m=1 &&顯示字段名下面的一行表格線 col1=1 do while m<=n1 if m=1

      @r1+3,col1 say ”├“+replicate(”-“,b(m))else

      if m=n1

      @r1+3,col1 say ”┼“+replicate(”-“,b(m))+”┤“

      else

      @r1+3,col1 say ”┼“+replicate(”-“,b(m))

      endif endif col1=col1+b(m)m=m+1 enddo row1=r1+4 do while.not.eof()&&每頁(yè)顯示20個(gè)記錄

      m=1 &&顯示各記錄的值

      col1=1 do while m<=n1

      if type(a(m))=”C“

      if m=1

      @row1,col1 say ”∣“+&a(m)

      else

      if m=n1

      @row1,col1 say ”∣“+alltrim(&a(m))+replicate(” “,(b(m)-len(alltrim(&a(m)))))+”∣“

      else

      @row1,col1 say ”∣“+&a(m)

      endif

      endif

      else

      if m=1

      @row1,col1 say ”∣“+str(&a(m))

      else

      if m=n1

      @row1,col1 say ”∣“+alltrim(str(&a(m)))+replicate(” “,(b(m)-len(alltrim(str(&a(m))))))+”∣“

      else

      @row1,col1 say ”∣“+alltrim(str(&a(m)))

      endif

      endif

      endif

      col1=col1+b(m)

      m=m+1 enddo SKIP if eof()

      &&顯示數(shù)據(jù)庫(kù)結(jié)束的最后一行

      m=1

      col1=1

      do while m<=n1

      if m=1

      @row1+1,col1 say ”└“+replicate(”-“,b(m))

      else

      if m=n1

      @row1+1,col1 say ”┴“+replicate(”-“,b(m))+”┘“

      else

      @row1+1,col1 say ”┴“+replicate(”-“,b(m))

      endif

      endif

      col1=col1+b(m)

      m=m+1

      enddo

      h=”.f.“

      exit else

      if r1=20 &&顯示每一頁(yè)的最后一行

      m=1

      col1=1

      do while m<=n1

      if m=1

      @row1+1,col1 say ”└“+replicate(”-“,b(m))

      else

      if m=n1

      @row1+1,col1 say ”┴“+replicate(”-“,b(m))+”┘“

      else

      @row1+1,col1 say ”┴“+replicate(”-“,b(m))endif

      endif

      col1=col1+b(m)

      m=m+1

      enddo

      r1=1

      eject

      exit

      else

      m=1 &&顯示每個(gè)記錄下面的一行表格線

      col1=1

      do while m<=n1

      if m=1

      @row1+1,col1 say ”├“+replicate(”-“,b(m))

      else

      if m=n1

      @row1+1,col1 say ”┼“+replicate(”-“,b(m))+”┤“

      else

      @row1+1,col1 say ”┼“+replicate(”-",b(m))

      endif

      endif

      col1=col1+b(m)

      m=m+1

      enddo

      endif

      ENDIF

      row1=row1+2

      r1=r1+1

      enddo && 每頁(yè)顯示20個(gè)記錄到此

      enddo

      set print off

      set device to screen set talk on return

      以上程序?qū)⒁粋€(gè)數(shù)據(jù)庫(kù)中的所有記錄以行為單位打印出來(lái),編制環(huán)境是Visual Foxpro 6.0,如果一個(gè)數(shù)據(jù)庫(kù)字段比較少,希望一行打印二個(gè)以上的記錄,稍作修改即可。需要提醒讀者的是,由于考慮到篇幅,本程序只設(shè)計(jì)了包含數(shù)字型和字符型的 數(shù)據(jù)庫(kù),對(duì)有其它類型的數(shù)據(jù)庫(kù),稍作修改就行了;如果用戶希望一頁(yè)的記錄不是20,只需要修改if r1=20這句中r1的值。筆者已經(jīng)編制了這類程序,可以向讀者提供。

      第二篇:全國(guó)計(jì)算機(jī)二級(jí)VFP模擬試題[

      VFP模擬試題

      1。VFP是一種 ________ 模型的數(shù)據(jù)庫(kù)管理系統(tǒng)。選擇:A.層次_ B.網(wǎng)絡(luò)_C.對(duì)象_ D.關(guān)系 答案: D 2。對(duì)于二維表的關(guān)鍵字來(lái)講,不一定存在的是 ________。選擇:A.主關(guān)鍵字_ B.候選關(guān)鍵字_C.超關(guān)鍵字_ D.外部關(guān)鍵字 答案: D 3。目前三種基本的數(shù)據(jù)模型是 ________。選擇:A.層次模型、網(wǎng)絡(luò)模型、關(guān)系模型_ B.對(duì)象模型、網(wǎng)絡(luò)模型、關(guān)系模型_C.網(wǎng)絡(luò)模型、對(duì)象模型、層次模型_ D.層次模型、關(guān)系模型、對(duì)象模型 答案: A 4。在命令窗口中,不能實(shí)現(xiàn)的操作是 ________。選擇:A.復(fù)制已執(zhí)行過(guò)的命令_ B.重復(fù)執(zhí)行已執(zhí)行過(guò)的命令_C.同時(shí)執(zhí)行多個(gè)命令_ D.在命令窗口中顯示命令執(zhí)行結(jié)果 答案: D 5。VFP系統(tǒng)中,表的結(jié)構(gòu)取決于

      ___________。選擇:A.字段的個(gè)數(shù)、名稱、類型和長(zhǎng)度_ B.字段的個(gè)數(shù)、名稱、順序_C.記錄的個(gè)數(shù)、順序_ D.記錄和字段的個(gè)數(shù)、順序 答案: A 6。某表單FrmA上有一個(gè)命令按鈕組CommandGroup1,命令按鈕組中有四個(gè)命令按鈕:CmdTop,CmdPrior,CmdNext,CmdLast。要求按下CmdLast時(shí),將按鈕CmdNext的Enabled屬性置為.F.,則在按鈕CmdLast的Click事件中應(yīng)加入_______ 命令。選擇:A.This.Enabled=.F.B.This.Parent.CmdNext.Enabled=.F._C.This.CmdNext.Enabled=.F.D.Thisform.CmdNext.Enabled=.F._ 答案: B 7。數(shù)據(jù)庫(kù)管理系統(tǒng)是 ________。選擇:A.教學(xué)軟件_ B.應(yīng)用軟件C.計(jì)算機(jī)輔助設(shè)計(jì)軟件_ D.系統(tǒng)軟件 答案: D 8。關(guān)系型數(shù)據(jù)庫(kù)采用 ________ 表示實(shí)體和實(shí)體間的聯(lián)系。選擇:A.對(duì)象 B.字段_C.二維表_ D.表單 答案: C 9。在定義表結(jié)構(gòu)時(shí),以下__________ 數(shù)據(jù)類型的字段寬度都是定長(zhǎng)的。選擇:A.字符型、貨幣型、數(shù)值型_ B.字符型、貨幣型、整型_C.備注型、邏輯型、數(shù)值型_ D.日期型、備注型、邏輯型 答案: D 10。VFP系統(tǒng)中的查詢文件是指一個(gè)包含一條SELECT-SQL命令的程序文件,文件的擴(kuò)展名為________。選擇:A..PRG B..QPRC..SCX D..TXT 答案: B 11。函數(shù)SUBSTR(“VisualFoxPro5.0”,7,6)的返回值是______。

      A.lFoxPro B.FoxProC.FoxPro5 D.FoxPro5.0 答案: B

      12下列說(shuō)法中正確的是_____。

      A.數(shù)據(jù)庫(kù)打開時(shí),該庫(kù)中的表將自動(dòng)打開

      B.當(dāng)打開數(shù)據(jù)庫(kù)中的某個(gè)表時(shí),該表所在的數(shù)據(jù)庫(kù)將自動(dòng)打開

      C.如果數(shù)據(jù)庫(kù)以獨(dú)占的方式打開,則庫(kù)中的表只能以獨(dú)占方式打開

      D.如果數(shù)據(jù)庫(kù)中的某個(gè)表以獨(dú)占方式打開,則庫(kù)中的其它表也只能以獨(dú)占方式 答案: B

      13。一個(gè)表的主關(guān)鍵字被包含到另一個(gè)表中時(shí),在另一個(gè)表中稱這些字段為_______。

      A.外關(guān)鍵字 B.主關(guān)鍵字C.超關(guān)鍵字 D.候選關(guān)鍵字_ 答案: A

      14。VFP系統(tǒng)中,使用查詢?cè)O(shè)計(jì)器生成的查詢文件中保存的是_______。

      A.查詢的命令 B.與查詢有關(guān)的基表 C.查詢的結(jié)果 D.查詢的條件 答案: A

      15。將某個(gè)控件綁定到一個(gè)字段,移動(dòng)記錄后字段的值發(fā)生變化,這時(shí)該控件的_______屬性的值也隨之變化。A.Value B.NameC.Caption D.沒(méi)有_ 答案: A

      16。如果要引用一個(gè)控制所在的直接容器對(duì)象,則可以使用下列_____屬性。

      A.THIS B.THISFORMC.PARENT D.都可以 答案: C

      17。頁(yè)框(PageFrame)能包容的對(duì)象是_____。選擇:A.頁(yè)面(Page)B.列(Column)C.標(biāo)頭(Header)D.表單集(FormSet)_ 答案: A

      18。對(duì)于創(chuàng)建新類,VFP提供的工具有:_____。選擇:A.類設(shè)計(jì)器和報(bào)表設(shè)計(jì)器 _ B.類設(shè)計(jì)器和查詢?cè)O(shè)計(jì)器 _C.類設(shè)計(jì)器和表單設(shè)計(jì)器 D.類設(shè)計(jì)器 答案: C

      19。以下的四組函數(shù),返回值的數(shù)據(jù)類型是一致的_____。選擇:A.DTOC(DATE()), DATE(),YEAR(DATE())_ B.ALLTRIM(“VFP 5.0”),ASC(“A”), SPACE(8)C.EOF(), RECCOUNT(), DBC()_ D.STR(3.14,3,1), DTOC(DATE()), SUBSTR(“ABCD”,3,1)答案: D

      20。VFP的循環(huán)語(yǔ)句有_____。選擇:A.DO WHILE,F(xiàn)OR和SCAN _ B.DO WHILE,F(xiàn)OR 和 LOOP _C.FOR,SCAN和LOOP _ D.DO CASE 和 DO WHILE _ 答案: A 21。字段的默認(rèn)值是保存在______。選擇:A.表的索引文件中 B.數(shù)據(jù)庫(kù)文件中C.項(xiàng)目文件中 D.表文件中 答案: B 22。徹底刪除記錄數(shù)據(jù)可以分兩步來(lái)實(shí)現(xiàn),這兩步是______。選擇:A.PACK和ZAP B.PACK和RECALL_C.DELETE和PACK D.DELE和RECALL _ 答案: C 23。表之間的“臨時(shí)性關(guān)系”,是在兩個(gè)打開的表之間建立的關(guān)系,如果兩個(gè)表有一個(gè)關(guān)閉后,則該“臨時(shí)性關(guān)系” ______。選擇:A.轉(zhuǎn)化為永久關(guān)系 B.永久保留C.臨時(shí)保留 D.消失 答案: D 24。表移出數(shù)據(jù)庫(kù)后,仍然有效的是______。選擇:A.字段的有效性規(guī)則 B.表的有效性規(guī)則 _C.字段的默認(rèn)值 _ D.結(jié)構(gòu)復(fù)合索引文件中的候選索引 _ 答案: D 25。下列控件均為容器類的是_____。選擇:A.表單、命令按鈕組、命令按鈕 _ B.表單集、列、組合框 _C.表格、列、文本框 _ D.頁(yè)框、列、表格 答案: D 26。VFP中可執(zhí)行的表單文件的擴(kuò)展名是______。選擇:A.SCT B.SCXC.SPR D.SPT 答案: B 27。關(guān)系模型的基本結(jié)構(gòu)是______。選擇:A.二維表_ B.樹形結(jié)構(gòu)C.無(wú)向圖 D.有向圖 _ 答案: A 28。創(chuàng)建對(duì)象時(shí)發(fā)生_____事件。選擇:A.LostFocus B.InteractiveChange _C.Init D.Click 答案: C 29。關(guān)于數(shù)據(jù)庫(kù)的操作,下述說(shuō)法中,_________是正確的。選擇:A.數(shù)據(jù)庫(kù)被刪除后,則它包含的數(shù)據(jù)庫(kù)表也隨著被刪除_ B.打開了新的數(shù)據(jù)庫(kù),則原來(lái)已打開的數(shù)據(jù)庫(kù)被關(guān)閉 _C.數(shù)據(jù)庫(kù)被關(guān)閉后,它所包含的數(shù)據(jù)庫(kù)表不能被打開_ D.數(shù)據(jù)庫(kù)被刪除后,它所包含的表變成自由表_ 答案: D 30。子類或?qū)ο缶哂醒佑酶割惖膶傩?、事件和方法的能力,稱為類的_____。選擇:A.繼承性 B.抽象性C.封裝性 D.多態(tài)性 _ 答案: A 31。命令按鈕中顯示的文字內(nèi)容,是在屬性 _______中設(shè)置的。選擇:A.Name B.CaptionC.FontName D.ControlSource 答案: B 32。VFP系統(tǒng)環(huán)境下,運(yùn)行表單的命令為_______。選擇:A.DO FORM <表單名> _ B.REPORT FORM <表單名>_C.DO <表單名> D.只能在項(xiàng)目管理器中運(yùn)行_ 答案: A

      33。建立事件循環(huán)的命令為______。選擇:A.READ EVENTS B.CLEAR EVENTS_C.DO WHILE??ENDDO D.FOR???ENDFOR_ 答案: A

      34。當(dāng)用鼠標(biāo)使組合框的內(nèi)容發(fā)生變化時(shí),將首先觸發(fā)_______事件。選擇:A.InteractiveChange B.ClickC.Init D.DownClick 答案: A

      35。設(shè)有一個(gè)頁(yè)框含有3個(gè)頁(yè)面,其中第一個(gè)頁(yè)面的名字為Page1,上面有二個(gè)命令按鈕:CmdOk、CmdPrint,如果要在CmdPrint的Click事件中引用CmdOk的Click事件代碼,則采用_______。選擇:A.This.Parent.CmdOk.Click()B.Thisform.Page1.CmdOk.Click()_C.This.CmdOk.Click()D.Thisform.CmdOk.Click()_ 答案: A

      36。有關(guān)類、對(duì)象、事件,下列說(shuō)法不正確的是 _________.選擇:A.對(duì)象用本身包含的代碼來(lái)實(shí)現(xiàn)操作 B.對(duì)象是類的特例C.類刻劃了一組具有相同結(jié)構(gòu)、操作并遵守相同規(guī)則的對(duì)象 D.事件是一種預(yù)先定義好的特定動(dòng)作,由用戶或系統(tǒng)激活 答案: A

      37。從CommandButton基類創(chuàng)建子類cmdA和cmdB,再由cmdA類創(chuàng)建cmdAA子類,則cmdA、cmdB和cmdAA必具有相同的_________。選擇:A.Caption屬性_ B.Name屬性C.BaseClass屬性 D.ParentClass屬性 答案: C

      38。所有類都可識(shí)別的事件即最小事件集包括___________.選擇:A.Init、Destroy和Error事件_ B.Load、Init和Destroy事件C.Load、Init和Unload事件 D.Init、Activate和Destroy事件 答案: A

      39。用戶在VFP中創(chuàng)建子類或表單時(shí),不能新建的是 ______________.選擇:A.屬性_ B.方法C.事件 D.事件的方法代碼 答案: C

      40。運(yùn)行查詢 CX1.QPR命令是 ________。選擇:A.use cx1_ B.use cx1.qprC.do cx1.qpr_ D.do cx1 答案: C

      41。在Visual FoxPro系統(tǒng)中,________創(chuàng)建時(shí),將不以獨(dú)立的文件形式存儲(chǔ)。選擇:A.查詢_ B.視圖 _C.類庫(kù) D.表單 答案: B

      42。文本框綁定到一個(gè)字段后,對(duì)文本框中的內(nèi)容進(jìn)行輸入或修改時(shí),文本框中的數(shù)據(jù)將同時(shí)保存到______中。選擇:A.Value和Name B.Value和該字段_C.Value和Caption D.Name和該字段_ 答案: B

      43。在Visual FoxPro中創(chuàng)建含備注字段的表和表的結(jié)構(gòu)復(fù)合索引文件后,系統(tǒng)自動(dòng)生成的三個(gè)文件的擴(kuò)展名為 ___________。選擇:A..PJX、.PJT、.PRG_ B..DBF、.CDX、.FPT_C..FPT、.FRX、.FXP _ D..DBC、.DCT、.DCX 答案: B 44。下列幾組控件中,均為容器類的是 _________。選擇:A.表單、列、組合框_ B.頁(yè)框、頁(yè)面、表格_C.列表框、列、下拉列表框_ D.表單、命令按鈕組、OLE控件 答案: B 45。Visual FoxPro是一個(gè) ________。選擇:A.數(shù)據(jù)庫(kù)系統(tǒng) B.數(shù)據(jù)庫(kù)管理系統(tǒng)_C.數(shù)據(jù)庫(kù) D.數(shù)據(jù)庫(kù)管理員 答案: B 46。如果要在同一個(gè)數(shù)據(jù)庫(kù)的二個(gè)表之間建立關(guān)系,則在父表的結(jié)構(gòu)復(fù)合索引文件中創(chuàng)建_______。選擇:A.主索引_ B.候選索引_C.普通索引_ D.唯一索引 答案: A 47。在向數(shù)據(jù)庫(kù)中添加表的操作時(shí),下列說(shuō)法中不正確的是 ________。選擇:A.可以將自由表添加到數(shù)據(jù)庫(kù)中_ B.可以將數(shù)據(jù)庫(kù)表添加到另一個(gè)數(shù)據(jù)庫(kù)中_C.可以在項(xiàng)目管理器中將自由表拖放到數(shù)據(jù)庫(kù)中_ D.先將數(shù)據(jù)庫(kù)表移出數(shù)據(jù)庫(kù)成為自由表,而后添加到另一個(gè)數(shù)鋸庫(kù)中 答案: B 48。VFP環(huán)境中,當(dāng)用戶將某個(gè)表的記錄或整個(gè)表文件都鎖定時(shí),只讀命令依然可以工作。下列____命令在記錄或整個(gè)文件鎖定時(shí)依然可以工作。選擇:A.INDEX B.REPLACEC.APPEND D.SELECT-SQL 答案: D 49。表之間的“一對(duì)多”關(guān)系是指___________。選擇:A.一個(gè)表與多個(gè)表之間的關(guān)系 B.一個(gè)表中的記錄對(duì)應(yīng)另一個(gè)表中的多個(gè)記錄 _C.一個(gè)表中的記錄對(duì)應(yīng)多個(gè)表中的一個(gè)記錄 __ D.一個(gè)表中的記錄對(duì)應(yīng)多個(gè)表中的多個(gè)記錄 答案: B 50。由計(jì)算機(jī)、操作系統(tǒng)、DBMS、數(shù)據(jù)庫(kù)、應(yīng)用程序等組成的整體稱為___________。選擇:A.數(shù)據(jù)庫(kù)系統(tǒng) B.數(shù)據(jù)庫(kù)管理系統(tǒng)C.文件系統(tǒng) D.軟件系統(tǒng) 答案: A 51。設(shè)有一個(gè)頁(yè)框含有3個(gè)頁(yè)面,其中第一個(gè)頁(yè)面的名字為Page1,上面有二個(gè)命令按鈕:CmdOk、CmdPrint,如果要在CmdPrint的Click事件中引用CmdOk的Click事件代碼,則采用_______。選擇:A.This.Parent.CmdOk.Click()B.Thisform.Page1.CmdOk.Click()C.This.CmdOk.Click()D.Thisform.CmdOk.Click()答案: A 52。如果要引用一個(gè)控制所在的直接容器對(duì)象,則可以使用下列_____屬性。

      A.THIS B.THISFORM C.PARENT D.都可以 答案: C

      53。下列四個(gè)事件:Init,Load,Activate和Destroy發(fā)生的順序?yàn)開____。

      A.Init,Load,Activate,Destroy B.Load,Init,Activate,Destroy

      C.Activate,Init,Load,Destroy D.Destroy,Load,Init,Activate

      答案: A 54。

      設(shè).null..AND..F.、.null..OR..F.、.null.=.null.分別是VFP 系統(tǒng)中的三個(gè)表達(dá)式,它們的值依次為:______。

      A..null.,.null.,.null.B..F.,.null.,.null.C:.F.,.null.,.T.D..F.,.F.,.null.答案: B

      55。創(chuàng)建對(duì)象時(shí)發(fā)生_____事件。A.LostFocus B.InteractiveChange

      C.Init D.Click 答案: C

      56。VFP 中,執(zhí)行“?ATC(“管理”,“數(shù)據(jù)庫(kù)管理系統(tǒng)”)”命令后,返回的結(jié)果是:______。A.0 B.4 C.7 D.錯(cuò)誤的函數(shù)名 答案: C

      57。下列關(guān)于數(shù)據(jù)的操作說(shuō)法中,正確的是______。答案: C

      A.貨幣型數(shù)據(jù)不能參加算術(shù)運(yùn)算 B.兩個(gè)日期型數(shù)據(jù)可以進(jìn)行加法運(yùn)算

      C.一個(gè)日期型數(shù)據(jù)可以加或減一個(gè)整數(shù) D.字符型數(shù)據(jù)能比較大小,日期型則不能

      58。VFP中可執(zhí)行的表單文件的擴(kuò)展名是______。A.SCT B.SCX C.SPR D.SPT 答案: B

      59。如果一個(gè)數(shù)據(jù)庫(kù)表的DELETE角發(fā)器設(shè)置為.F.,則不允許對(duì)該表作_________的操作。

      A.修改記錄 B.刪除記錄 C.增加記錄 D.顯示記錄 答案: B

      60。列表框是_______控件。

      A.數(shù)據(jù)綁定型 B.非數(shù)據(jù)綁定型 C.數(shù)值型 D.邏輯型 答案: A 61。在VFP的菜單或菜單選項(xiàng)中,經(jīng)常會(huì)有一些呈暗灰色的選項(xiàng),這可能是______。

      A.這些項(xiàng)在當(dāng)前狀態(tài)下不起作用或其處理程序沒(méi)有裝人 B.系統(tǒng)運(yùn)行發(fā)生故障

      C.本身有缺陷 D.以上都不對(duì) 答案: A 62。VFP的文件菜單中的CLOSE命令是用來(lái)關(guān)閉________。

      A.當(dāng)前工作區(qū)中已打開的數(shù)據(jù)庫(kù) B.所有已打開的數(shù)據(jù)庫(kù)

      C.所有窗口 D.當(dāng)前活動(dòng)的窗口 答案: D 63。項(xiàng)目管理器的功能是組織和管理與項(xiàng)目有關(guān)的各種類型的_________。

      A.文件 B.字段 C.程序 D.數(shù)據(jù) 答案: A 64。對(duì)于空值,下列敘述中不正確的是______。答案: C A.空值不是一種數(shù)據(jù)類型 B.空值可以賦給變量、數(shù)組和字段

      C.空值等于空串(“”)和空格 D.條件表達(dá)式中遇到null值,該條件表達(dá)式為“假”

      65。在VFP3.0系統(tǒng)環(huán)境下,若使用的命令中同時(shí)含有子句FOR、WHILE和SCOPE(范圍),則下列敘述中正確的是_________。

      A.三個(gè)子句執(zhí)行時(shí)的優(yōu)先級(jí)這為:FOR、WHILE、SCOPE(范圍)

      B.三個(gè)子句執(zhí)行時(shí)的優(yōu)先級(jí)這為:WHILE、SCOPE(范圍)、FOR C.三個(gè)子句執(zhí)行時(shí)的優(yōu)先級(jí)這為:SCOPE(范圍)、WHILE、FOR D.無(wú)優(yōu)先級(jí),按子句出現(xiàn)的順序執(zhí)行 答案: C 66。有關(guān)查詢與視圖,下列說(shuō)法中不正確的是______。答案: B A.查詢是只讀型數(shù)據(jù),而視圖可以更新數(shù)據(jù)源

      B.查詢可以更新源數(shù)據(jù),視圖也有此功能

      C.視圖具有許多數(shù)據(jù)庫(kù)表的必性,利用視圖可以創(chuàng)建查詢和視圖

      D.視圖可以更新源表中的數(shù)據(jù),存在于數(shù)據(jù)庫(kù)中

      67。有關(guān)類、對(duì)象、事件,下列說(shuō)法中不正確的是_________。答案: A

      A.對(duì)象僅能用本身包含的代碼來(lái)實(shí)現(xiàn)操作 B.對(duì)象可以是任何客觀事物,對(duì)象是類的特例

      C.類是一組具有相同結(jié)構(gòu)、操作并遵守相同規(guī)則的對(duì)象

      D.事件是一種預(yù)先定義好的特定動(dòng)作,由用戶或系統(tǒng)激活

      68。下列各組控件中,全部可與表中數(shù)據(jù)綁定的控件是_____。答案: C

      A.EditBox、Grid、Line B.ListBox、Shape、OptonButton

      C.ComBox、Grid、TextBox D.CheckBox、Separator、EditBox

      69。若要建一個(gè)有5個(gè)按鈕的選項(xiàng)組,應(yīng)將屬性_____的值改為5。

      A.Optiongroup B.Buttoncount

      C.BoundColumn D.ControlSource 答案: B

      70。在多用戶環(huán)境下,緩沖技術(shù)可以保護(hù)對(duì)單個(gè)記錄或多個(gè)記錄所做的數(shù)據(jù)更新以及數(shù)據(jù)維護(hù)操作。Visual FoxPro以兩種鎖定方式提供緩沖:______。

      A.保守式和開放式 B.記錄方式和表方式

      C.對(duì)象式和類式 D.數(shù)據(jù)方式和程序方式 答案: A

      71。對(duì)于自由表而言,不允許有重復(fù)值的索引是 _______。

      A.主索引 B.侯選索引 C.普通索引 D.唯一索引 答案: B

      72。下列命令中,不能使程序跳出循環(huán)的是_______。

      A.LOOP B.EXIT C.QUIT D.RETURN 答案: A

      73。下列說(shuō)法中,不正確的是_______。

      選擇:A.二維表中的每一列均有唯一的字段名 B.二維表中不允許出現(xiàn)完全相同的兩行C.二維表中行的順序、列的順序均可以任意交換 D.二維表中行的順序、列的順序不可以任意交換 答案: D 74。有一菜單文件MAIN.MNX,運(yùn)行該菜單的操作是_______。選擇:A.執(zhí)行命令 DO MAIN.MNX B.執(zhí)行命令 DO MENU MAIN.MNX C.先生成菜單程序文件MAIN.MPR,再執(zhí)行命令DO MAIN.MPR D.先生成菜單程序文件MAIN.MPR,再執(zhí)行命令DO MENU MAIN.MPR 答案: D 75。關(guān)于表格控件,下列說(shuō)法中不正確的是_______。

      選擇:A.表格的數(shù)據(jù)源可以是表、視圖、查詢

      B.表格中的列控件不包含其它控件 C.表格能顯示一對(duì)多關(guān)系中的子表 D.表格是一個(gè)容器對(duì)象 答案: B 76。學(xué)生管理數(shù)據(jù)庫(kù)中有二個(gè)表:學(xué)生表和成績(jī)表,表結(jié)構(gòu)分別如下,xs.dbf | cj.dbf 學(xué)號(hào) xh c,8 | 學(xué)號(hào) xh c, 8 姓名 xm c,8 | 課程號(hào) kch c, 4 性別 xb c,2 | 課程名 kcm c, 20 出生日期 csrq d | 成績(jī) cj n,3 有一個(gè)按班級(jí)號(hào)查該班每一個(gè)學(xué)生總成績(jī)的表單:

      班級(jí)號(hào)由學(xué)生學(xué)號(hào)的前4位組成。該表單組合框的 RowSource Type屬性為 3-SQL 語(yǔ)句,則它的 RowSource屬性為_______。

      選擇:A.select DISTINCT SUBSTR(xh,1,4)FROM xs INTO CURSOR xtmp B.select SUBSTR(xh,4)FROM xs INTO CURSOR xtmp C.select DISTINCT xh FROM xs INTO CURSOR xtmp D.select DISTINCT SUBSTR(xh,1,4)FROM xs INTO xtmp 答案: A

      77。某表單FrmA上有一個(gè)命令按鈕組

      CommandGroup1,命令按鈕組中有四個(gè)命令按鈕:CmdTop,CmdPrior,CmdNext,CmdLast。要求按下CmdLast時(shí),將按鈕CmdNext的Enabled屬性置為.F.,則在按鈕CmdLast的Click事件中應(yīng)加入_______ 命令。選擇:A.This.Enabled=.F.B.This.Parent.CmdNext.Enabled=.F.C.This.CmdNext.Enabled=.F.D.Thisform.CmdNext.Enabled=.F.答案: B

      78。關(guān)系型數(shù)據(jù)庫(kù)采用 ________ 表示實(shí)體和實(shí)體間的聯(lián)系。

      A.對(duì)象 B.字段 C.二維表 D.表單 答案: C

      79。在命令窗口中,不能實(shí)現(xiàn)的操作是 ________。

      A.復(fù)制已執(zhí)行過(guò)的命令 B.重復(fù)執(zhí)行已執(zhí)行過(guò)的命令

      C: 同時(shí)執(zhí)行多個(gè)命令 D.在命令窗口中顯示命令執(zhí)行結(jié)果 答案: D

      80。要求一個(gè)表中的數(shù)值型字段數(shù)據(jù)精度具有 4 位小數(shù),則該字段的寬度至少定義為_________。

      A.4位 B.5位 C.6位 D.12位 答案: C

      81。打開一個(gè)空表,執(zhí)行 ?EOF(),BOF()命令,顯示結(jié)果為_________。

      A..T.和.T. B..F.和.F. C..F.和.T. D..T.和.F. 答案: A

      82。表(XS.DBF)中含有100條記錄,執(zhí)行下列命令后顯示的記錄序號(hào)是________。

      USE XS GO 10 LIST NEXT 4

      A.10,11,12,13 B.11,12,13,14 C.4,5,6,7 D.1,2,3,4 答案:

      A

      83。下列關(guān)于數(shù)據(jù)庫(kù)的描述中,不正確的是 __________。選擇:A.數(shù)據(jù)庫(kù)是一個(gè)包容器,它提供了存儲(chǔ)數(shù)據(jù)的一種體系結(jié)構(gòu)

      B.數(shù)據(jù)庫(kù)表和自由表的擴(kuò)展名都是.DBF C.數(shù)據(jù)庫(kù)表的表設(shè)計(jì)器和自由表的表設(shè)計(jì)器是不相同的

      D.數(shù)據(jù)庫(kù)表的記錄保存在數(shù)據(jù)庫(kù)中 答案: D 84。創(chuàng)建數(shù)據(jù)庫(kù)后,系統(tǒng)自動(dòng)生成擴(kuò)展名為 ________ 的三個(gè)文件。

      A..SCX、.SCT、.SPX B..DBC、.DCT、.DCX

      C..PJX、.PJT、.RPJ D..DBF、.DBT、.FPT 答案: B 85。在向數(shù)據(jù)庫(kù)中添加表的操作時(shí),下列說(shuō)法中不正確的是 ________。答案: B A.可以將自由表添加到數(shù)據(jù)庫(kù)中

      B.可以將數(shù)據(jù)庫(kù)表添加到另一個(gè)數(shù)據(jù)庫(kù)中 C.可以在項(xiàng)目管理器中將自由表拖放到數(shù)據(jù)庫(kù)中 D.先將數(shù)據(jù)庫(kù)表移出數(shù)據(jù)庫(kù)成為自由表,而后添加到另一個(gè)數(shù)據(jù)庫(kù)中

      86。下列關(guān)于索引的描述中,不正確的是 ________。選擇:A.結(jié)構(gòu)和非結(jié)構(gòu)復(fù)合索引文件的擴(kuò)展名均為.CDX

      B.結(jié)構(gòu)復(fù)合索引文件隨表的打開而自動(dòng)打開 C.一個(gè)數(shù)據(jù)庫(kù)表僅能創(chuàng)建一個(gè)主索引和一個(gè)唯一索引

      D.結(jié)構(gòu)復(fù)合索引文件中的索引在表中的字段修改時(shí),自動(dòng)更新 答案: C 87。參照完整性的作用是___________ 控制。

      A.字段數(shù)據(jù)的輸入 B.記錄中相關(guān)字段之間的數(shù)據(jù)有效性

      C.表中數(shù)據(jù)的完整性 D.相關(guān)表之間的數(shù)據(jù)一致性 答案: B 88。___________ 不可以作為查詢和視圖的輸出類型。

      A.自由表 B.表單 C.臨時(shí)表 D.數(shù)組 答案: B 89。下列說(shuō)法中正確的是___________。A.視圖文件的擴(kuò)展名 .vcx B.查詢文件中保存的是查詢的結(jié)果

      C.查詢?cè)O(shè)計(jì)器實(shí)質(zhì)上是SELECT-SQL 命令的可視化設(shè)計(jì)方法

      D.查詢是基于表的并且是可更新的數(shù)據(jù)集合 答案: C

      90。實(shí)體模型反映實(shí)體及實(shí)體之間的關(guān)系,是人們的頭腦對(duì)現(xiàn)實(shí)世界中客觀事物及其相互聯(lián)系的認(rèn)識(shí),而 __________ 是實(shí)體模型的數(shù)據(jù)化,是觀念世界的實(shí)體模型在數(shù)據(jù)世界中的反映,是對(duì)現(xiàn)實(shí)世界的抽象。

      A.數(shù)據(jù)模型 B.關(guān)系模型 C.邏輯模型 D.概念模型 答案: A

      91。學(xué)生表(XS.DBF)的表結(jié)構(gòu)為:學(xué)號(hào)(XH,C,8),姓名(XM,C,8),性別(XB,C,2)班級(jí)(BJ,C,6),用Insert 命令向XS表添加一條新記錄,記錄內(nèi)容為:

      XH XM XB BJ 99220101 王 凌 男 992201 下列命令中正確的是 ________。選擇:A.INSERT INTO XS VALUES(“99220101”,“王 凌”,“男”,“992201”)B.INSERT TO XS VALUES(“99220101”,“王 凌”,“男”,“992201”)C.INSERT INTO XS(XH,XM,XB,BJ)VALUES(99220101, 王 凌,男,992 D.INSERT TO XS(XH,XM,XB,BJ)VALUES(“99220101”,“ 王 凌”,“男”,“992 答案: A

      92。建立兩個(gè)表之間的臨時(shí)關(guān)系時(shí),必須設(shè)置 _________。答案: D

      A.主表的主索引 B.主表的主控索引 C.子表的主索引 D.子表的主控索引

      93。在Visual FoxPro中創(chuàng)建含備注字段的表和表的結(jié)構(gòu)復(fù)合索引文件后,系統(tǒng)自動(dòng)生成的三個(gè)文件的擴(kuò)展名為 ___________。

      A..PJX、.PJT、.PRG B..DBF、.CDX、.FPT C..FPT、.FRX、.FXP D..DBC、.DCT、.DCX 答案: B

      94。在Visual FoxPro系統(tǒng)中,________創(chuàng)建時(shí),將不以獨(dú)立的文件形式存儲(chǔ)。

      A.查詢 B.視圖 C.類庫(kù) D.表單 答案: B

      95。運(yùn)行查詢 CX1.QPR命令是 ________。

      A.USE CX1 B.USE CX1.QPR C.DO CX1.QPR D.DO CX1 答案: C

      96。用DIMENSION ARR(3,3)命令聲明了一個(gè)二維數(shù)組后,再執(zhí)行ARR=3命令,則__________。A.命令A(yù)RR=3 創(chuàng)建了一個(gè)新的內(nèi)存變量,它與數(shù)組無(wú)關(guān) B.數(shù)組的第1個(gè)元素被賦值為3C.所有的數(shù)值元素均被賦值為3 D.當(dāng)存在數(shù)組ARR時(shí),不可用ARR=3命令創(chuàng)建與數(shù)組同名的內(nèi)存變量 答案: C 97。在命令窗口中執(zhí)行了命令X=5后,則默認(rèn)該變量的作用域是_________。

      選擇:A.全局 B.局部C.私有 D.不定 答案: A 98。已知“xs”表中有一字段為“xm”,當(dāng)執(zhí)行了USE xs ALIAS stu 命令打開該表后,要訪問(wèn)該表當(dāng)前記錄的“xm”字段的值,不正確的訪問(wèn)是 ____________。選擇:A.xm B.xs.xmC.stu.xm D.stu->xm 答案: C 99。用戶在VFP中創(chuàng)建子類或表單時(shí),不能新建的是 ___________。選擇:A.屬性

      B.方法C.事件 D.事件的方法代碼 答案: C 100。下列對(duì)于事件的描述不正確的是________________。選擇:A.事件是由對(duì)象識(shí)別的一個(gè)動(dòng)作

      B.事件可以由用戶的操作產(chǎn)生,也可以由系統(tǒng)產(chǎn)生C.如果事件沒(méi)有與之相關(guān)聯(lián)的處理程序代碼,則對(duì)象的事件不會(huì)發(fā)生 D.有些事件只能被個(gè)別對(duì)象所識(shí)別,而有些事件可以被大多數(shù)對(duì)象所識(shí)別 答案: C 101。所有類都可識(shí)別的事件即最小事件集包括____________。選擇:A.Init、Destroy和Error事件

      B.Load、Init和Destroy事件C.Load、Init和Unload事件 D.Init、Activate和Destroy事件 答案: A 102。對(duì)于任何子類或?qū)ο?,一定具有的屬性是_________。選擇:A.Caption B.BaseClassC.FontSize D.ForeColor 答案: B 103。設(shè)某子類Q具有P屬性,則_________。選擇:A.Q的父類也必定具有P屬性,且Q的P屬性值必定與其父類的P屬性值相* B.Q的父類也必定具有P屬性,但Q的P屬性值可以與其父類的P屬性值不*C.Q的父類要么不具有P屬性,否則由于繼承性,Q與其父類的P屬性值必 D.Q的父類未必具有P屬性,即使有,Q與其父類的P屬性值也未必相同 答案: D 104。從CommandButton基類創(chuàng)建子類cmdA和cmdB,再由cmdA類創(chuàng)建cmdAA子類,則cmdA、cmdB和cmdAA必具有相同的_________。選擇:A.Caption屬性

      B.Name屬性C.BaseClass屬性 D.ParentClass屬性 答案: C 105。有關(guān)類、對(duì)象、事件、,下列說(shuō)法不正確的是 ____________。選擇:A.對(duì)象用本身包含的代碼來(lái)實(shí)現(xiàn)操作

      B.對(duì)象是類的特例C.類刻劃了一組具有相同結(jié)構(gòu)、操作并遵守相同規(guī)則的對(duì)象 D.事件是一種預(yù)先定義好的特定動(dòng)作,由用戶或系統(tǒng)激活 答案: A

      106。下列屬于方法名的是

      _________。選擇:A.GotFocus B.SetFocusC.LostFocus

      D.Activate 答案: B 107。容器型的對(duì)象

      _________。選擇:A.只能是表單或表單集

      B.必須由基類Container派生得到C.能包容其他對(duì)象,并且可以分別處理這些對(duì)象 D.能包容其他對(duì)象,但不可以分別處理這些對(duì)象 答案: C

      108.在表的瀏覽窗口中,要在一個(gè)允許Null值的字段中輸入.NULL.值的方法是_______.選擇:A.直接輸入“.Null.”的各個(gè)字母 B.按[Ctrl]+[0]組合鍵C.按[Ctrl]+[N]組合鍵 D.按[Ctrl]+[L]組合鍵 答案: B

      109.當(dāng)執(zhí)行命令 USE teacher ALIAS js IN B 后,被打開的表的別名是_________。選擇:A.teacher B.jsC.B D.js_B 答案: B

      110.下面__________命令組與 LIST FOR xb=”女“ 具有相同的顯示結(jié)果。選擇:A.LIST(回車)SET FILTER TO(回車)B.SET FILTER TO xb=”女“(回車)LISE(回車)C.SET FILTER TO(回車)LIST(回車)D.LIST(回車)SET FILTER TO xb=”女“(回車)答案: B

      111.索引文件中的標(biāo)識(shí)名最多由_______個(gè)字母、數(shù)字或下劃線組成。選擇:A.5 B.6C.8 D.10 答案: D

      112.已知js表中有兩條記錄,下列操作中,返回值一定是.T.的是______。選擇:A.USE js(回車)? BOF()(回車)B.USE js(回車)GO 2(回車)SKIP-1(回車)? BOF()(回車)C.USE js(回車)GO BOTTOM(回車)SKIP(回車)? EOF()(回車)D.USE js(回車)SKIP-1(回車)? EOF()(回車)答案: C

      2.6.某打開的表中有20條記錄,當(dāng)前記錄號(hào)為8,執(zhí)行命令 LIST NEXT 3(回車)后,所顯示的記錄的序號(hào)為_____________。選擇:A.8-11 B.9-10C.8-10 D.9-11 答案: C

      2.7.打開一張表后,執(zhí)行下列命令:

      GO 6 SKIP-5 GO 5 則關(guān)于記錄指針的位置說(shuō)法正確的是____________。選擇:A.記錄指針停在當(dāng)前記錄不動(dòng) B.記錄指針的位置取決于記錄的個(gè)數(shù)C.記錄指針指向第5條記錄 D.記錄指針指向第一條記錄 答案: B 2.8.下列命令中___________可以在共享方式下運(yùn)行。選擇:A.APPEND B.PACK C.MODIFY STRUCTURE D.ZAP 答案: A 2.9.一張表的全部Memo字段的內(nèi)容存儲(chǔ)在___________。選擇:A.不同的備注文件中 B.同一個(gè)文本文件中C.同一個(gè)備注文件中 D.同一個(gè)數(shù)據(jù)庫(kù)文件中 答案: C 2.10.有關(guān)表的索引,下列說(shuō)法中不正確的是___________。選擇:A.當(dāng)一張表被打開時(shí),其對(duì)應(yīng)的結(jié)構(gòu)復(fù)合索引文件被自動(dòng)打開 B.任何表的結(jié)構(gòu)復(fù)合索引能控制表中字段重復(fù)值的輸入C.一張表可建立多個(gè)候選索引 D.主索引只適用于數(shù)據(jù)庫(kù)表 答案: B 2.11.建立索引時(shí),__________字段不能作為索引字段。選擇:A.字符型 B.數(shù)值型C.備注型 D.日期型 答案: C 2.12.設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),可使用紐帶表來(lái)處理表與表之間的______________。選擇:A.多對(duì)多關(guān)系 B.臨時(shí)性關(guān)系C.永久性關(guān)系 D.繼承關(guān)系 答案: A 2.13.創(chuàng)建數(shù)據(jù)庫(kù)后,系統(tǒng)自動(dòng)生成的三個(gè)文件的擴(kuò)展名是_______。選擇:A..pjx.pjt.rpg B..sct.scx.spxC..fpt.frx.fxp D..dbc.dct.dcx 答案: D 2.14.如果要在數(shù)據(jù)庫(kù)的兩張表之間建立永久關(guān)系,則至少要求在父表的結(jié)構(gòu)復(fù)合索引文件中創(chuàng)建一個(gè)____________,在子表的結(jié)構(gòu)復(fù)合索引文件中創(chuàng)建任何類型的文件。選擇:A.主索引 B.候選索引C.主索引或候選索引 D.唯一索引 答案: C 2.15.數(shù)據(jù)庫(kù)表之間創(chuàng)建的永久關(guān)系保存在_________中。選擇:A.數(shù)據(jù)庫(kù)表 B.數(shù)據(jù)庫(kù)C.表設(shè)計(jì)器 D.數(shù)據(jù)環(huán)境設(shè)計(jì)器 答案: B 2.16.下列關(guān)于表的索引的描述中,錯(cuò)誤的是_________。選擇:A.復(fù)合索引文件的擴(kuò)展名為.cdx B.結(jié)構(gòu)復(fù)合索引文件隨表的打開而自動(dòng)打開C.當(dāng)對(duì)表編輯修改時(shí),其結(jié)構(gòu)復(fù)合索引文件中的所有索引自動(dòng)維護(hù) D.每張表只能創(chuàng)建一個(gè)主索引和一個(gè)候選索引 答案: D 2.17.在?照完整性中,設(shè)置更新操作規(guī)則時(shí),選擇了“限制”,下列說(shuō)法中_________是正確的。選擇:A.當(dāng)更改了主表的“主”或“候選”關(guān)鍵字后,自動(dòng)更改子表相應(yīng)記錄 B.允許更改子表中對(duì)應(yīng)的普通索引關(guān)鍵字的字段值C.在子表中有相關(guān)記錄時(shí),主表的主或候選關(guān)鍵字段值

      禁止更改 D.當(dāng)更改了子表中的字段值,則自動(dòng)更改主表中對(duì)應(yīng)記錄的字段值 答案: C

      2.18.如果一張數(shù)據(jù)庫(kù)表的 DELETE 觸發(fā)器設(shè)置為.F.,則不允許對(duì)該表作__________記錄的操作。選擇:A.修改 B.刪除C.增加 D.顯示 答案: B

      2.19.在數(shù)據(jù)庫(kù)jxsj.dbc中,要獲得表js.dbf字段gh的標(biāo)題,先打開該數(shù)據(jù)庫(kù),并為當(dāng)前數(shù)據(jù)庫(kù),再用函數(shù)DBGETPROP(_________,”FIELD“,”CAPTION“).選擇:A.js.gh B.”js.gh“C.gh D.”gh“ 答案: B

      2.20.數(shù)據(jù)庫(kù)表的 INSERT 觸發(fā)器,在表中_____________記錄時(shí)觸發(fā)該規(guī)則。選擇:A.增加 B.修改C.刪除 D.瀏覽 答案: A

      2.21.在參照完整性的設(shè)置中,如果當(dāng)主表中刪除記錄后,要求刪除子表中的相關(guān)記錄,則應(yīng)將“刪除”規(guī)則設(shè)置為__________。選擇:A.限制 B.級(jí)聯(lián)C.忽略 D.任意 答案: B

      2.22.要在兩張相關(guān)的表之間建立永久關(guān)系,這兩張表應(yīng)該是____________。選擇:A.同一個(gè)數(shù)據(jù)庫(kù)內(nèi)的兩張表 B.兩張自由表C.一張自由表,一張數(shù)據(jù)庫(kù)表 D.任意兩張數(shù)據(jù)庫(kù)表或自由表 答案: A

      2.23.庫(kù)表字段的默認(rèn)值保存在__________文件中。選擇:A.表 B.數(shù)據(jù)庫(kù)C.項(xiàng)目 D.表的索引 答案: B

      2.24.以下的__________操作將造成相關(guān)表之間數(shù)據(jù)的不一致。選擇:A.在主表中插入記錄的主關(guān)鍵字的值是子表中所沒(méi)有的 B.在主表中刪除了記錄,而在子表中沒(méi)有刪除相關(guān)記錄C.在子表中刪除了記錄,而在主表中沒(méi)有刪除相關(guān)記錄 D.用主表的主關(guān)鍵字字段的值修改了子表中的一個(gè)記錄 答案: B

      2.25.以下___________操作不會(huì)損壞相關(guān)表之間的數(shù)據(jù)一致性。選擇:A.刪除了子表中的記錄而沒(méi)有刪除主表中相關(guān)記錄 B.刪除了主表中的記錄而沒(méi)有刪除子表中相關(guān)記錄C.在子表中插入記錄的為外部關(guān)鍵字值是主表關(guān)鍵字中所沒(méi)有的 D.主表中修改了主關(guān)鍵字值而子表中沒(méi)修改有關(guān)的外部關(guān)鍵字值 答案: A

      2.26.建立兩張表之間的臨時(shí)關(guān)系時(shí),必須設(shè)置的是___________。選擇:A.主表的主索引 B.主表的主索引和子表的主控索引C.子表的主控索引 D.主表的主控索引和子表的主控索引 答案: C

      2.27.以下_____________操作不會(huì)激活記錄的有效性規(guī)則檢驗(yàn)。選擇:A.修改表結(jié)構(gòu)并保存時(shí) B.修改表的某一記錄時(shí)C.修改了記錄值并執(zhí)行SKIP命令時(shí) D.修改了數(shù)據(jù)并關(guān)閉表時(shí) 答案: B 2.28.當(dāng)成功執(zhí)行以下一組命令后,下列不正確的說(shuō)法是__________。

      OPEN DATABASE jxsj OPEN DATABASE rsda 選擇:A.由于打開了第二個(gè)數(shù)據(jù)庫(kù)rsda,而關(guān)閉了jxsj數(shù)據(jù)庫(kù) B.當(dāng)前數(shù)據(jù)庫(kù)是rsdaC.表達(dá)式DBUSED(”jxsj“)AND DBUSED(”rsda“)的值為.T.D.當(dāng)再執(zhí)行CLOSE DATABASES命令后,jxsj庫(kù)沒(méi)有被關(guān)閉 答案: A 2.29.永久關(guān)系的主要作用是_________。選擇:A.作為查詢的聯(lián)接條件 B.作為表單數(shù)據(jù)環(huán)境中默認(rèn)的臨時(shí)關(guān)系C.存儲(chǔ)參照完整性信息 D.控制相關(guān)表之間記錄的訪問(wèn) 答案: C 2.30.表之間的“一對(duì)多”關(guān)系是指___________。選擇:A.一張表與多張表之間的關(guān)系 B.一張表中的一個(gè)記錄對(duì)應(yīng)另一張表中的多個(gè)記錄C.一張表中的一個(gè)記錄對(duì)應(yīng)多張表中的一個(gè)記錄 D.一張表中的一個(gè)記錄對(duì)應(yīng)多張表中的多個(gè)記錄 答案: B 2.31.設(shè)學(xué)生成績(jī)表cj包含學(xué)號(hào)xh字段和課程代號(hào)kcdh字段,如果設(shè)置記錄有效性規(guī)則為NOT(EMPTY(xh)OR EMPTY(kcdh)),則執(zhí)行下列________命令并關(guān)閉表時(shí),不會(huì)違反該記錄的有效性規(guī)則。選擇:A.USE cj{回車} APPEND BLANK B.USE cj{回車} APPEND BLANK{回車} REPLACE xh WITH ”9901000C.INSERT INTO cj(xh,kcdh)VALUES(“99010001”,“02”)D.INSERT INTO cj(xh,cj)VALUES(“99010001”,85)答案: C 2.32.如已在學(xué)生表和成績(jī)表之間按學(xué)號(hào)建立永久關(guān)系,現(xiàn)要設(shè)置參照完整性:當(dāng)在成績(jī)表中添加記錄時(shí),凡是學(xué)生表中不存在的學(xué)號(hào)不允許添加,則該參照完整性應(yīng)設(shè)置為_________。選擇:A.更新級(jí)聯(lián) B.更新限制C.插入級(jí)聯(lián) D.插入限制 答案: D 2.33.參照完整性的作用是_______________控制。選擇:A.字段數(shù)據(jù)的輸入 B.記錄中相關(guān)字段之間的數(shù)據(jù)有效性C.表中數(shù)據(jù)的完整性 D.相關(guān)表之間的數(shù)據(jù)一致性 答案: D 3.1.視圖是一種存儲(chǔ)在數(shù)據(jù)庫(kù)中的特殊的表,當(dāng)它被打開時(shí),對(duì)于本地視圖而言,系統(tǒng)將同時(shí)在其他工作區(qū)中把視圖所基于的基表打開,這是因?yàn)橐晥D包含一條__________語(yǔ)句。選擇:A.SELECT-SQL B.USEC.LOCATE D.SET FILTER TO.....答案: A 3.2.有關(guān)查詢和視圖,下列說(shuō)法中不正確的是__________。選擇:A.查詢是只讀型數(shù)據(jù),而視圖可以更新數(shù)據(jù)源 B.查詢可以更新數(shù)據(jù)源,視圖也有此功能C.視圖具有許多數(shù)據(jù)庫(kù)表的屬性,利用視圖可以創(chuàng)建查詢和視圖

      D.視圖可以更新源表中的數(shù)據(jù),存儲(chǔ)于數(shù)據(jù)庫(kù)中 答案: B

      VFP填空題

      1.?dāng)?shù)據(jù)的不一致性是指_________。

      答案: 相同的數(shù)據(jù)在不同的應(yīng)用程序中出現(xiàn)不同的值

      2. VFP系統(tǒng)中,終止事件循環(huán)的命令是______。

      答案: CLEAR EVENTS

      3. 目前較為流行的一種信息模型設(shè)計(jì)方法稱為E-R方法,E-R方法的中文含義為

      ______。

      答案: 實(shí)體聯(lián)系方法

      4. 如果要把一個(gè)文本框?qū)ο蟮某踔翟O(shè)置為當(dāng)前日期,則在該文本框的Init事件中設(shè)置代碼

      為______。

      答案: THIS.VALUE=DATE()

      5. 與Thisform.Release功能等價(jià)的命令為_______。

      答案: Release Thisform

      6.______型數(shù)據(jù)只能用于表而不能用于內(nèi)存變量。

      答案: 備注和通用

      7.已知教師表(JS.DBF)中含有一條姓名(XM)為“王一平”的記錄,執(zhí)行下列程序段后,輸出結(jié)果為______。

      SELE JS

      LOCAT FOR XM=“王一平” XM=3 ?XM

      答案: 王一平

      8.與XB=“男”.OR.XB=“女”等價(jià)的表達(dá)式為______。

      答案: XB$“男女”

      9.表達(dá)式STR(YEAR(DATE()+10))的數(shù)據(jù)類型為_______。

      答案: C

      10.已知教師表(JS.DBF)已經(jīng)按姓名(XM)建立索引,答案: SEEK(“王一平”)

      閱讀下列程序: SELE JS SET ORDER TO xm SEEK '王一平' IF FOUND()DISPLAY ELSE WAIT WIND '查無(wú)此人' ENDIF 如果要用SEEK函數(shù)完成上述相同的功能,應(yīng)將程序改成:

      SELE JS SET ORDER TO xm IF ________ DISPLAY ELSE WAIT WIND '查無(wú)此人' ENDIF 11.打開項(xiàng)目的命令是_______。

      答案: MODIFY PROJECT 12.Grid、Text、CommandGroup、Column是VFP系統(tǒng)中的對(duì)象,它們當(dāng)中不能直接加到表單中的對(duì)象是________。

      答案: Column 13.類包含了對(duì)象的程序設(shè)計(jì)和數(shù)據(jù)抽象,是具有相同行為的_______的抽象。

      答案: 對(duì)象

      14.當(dāng)打開的表為一個(gè)空表時(shí),函數(shù)RECNO()的值為________。

      答案: 1 15.已知N='1',M='2',X12='GOOD',則表達(dá)式X&N&M的值為_______。

      答案: 'GOOD' 16.下列程序段用來(lái)求0~100之間的偶數(shù)之和,請(qǐng)將它寫完整:

      N=0 S=0 DO WHILE N<=100 N=N+1 IF N%2=1 _______

      ELSE

      S=S+N ENDIF ENDDO

      答案: LOOP

      17.視圖可以在數(shù)據(jù)庫(kù)設(shè)計(jì)器中打開,也可以用USE命令打開,但在使用USE命令之前,必須打開包含該視圖的________。

      答案: 數(shù)據(jù)庫(kù) 18.假定有三個(gè)數(shù)據(jù)庫(kù)文

      件: 答案: SET DATABASE TO MYDATA2

      MYDATA1,MYDATA2,MYDATA3,它們分別存放在C盤的DATA目

      錄,D盤的DATA目錄,A盤的DATA目錄,完善下列程序,使

      得程序執(zhí)行以后,DBC()函數(shù)的值為 D:DATAMYDATA2.DBC。

      OPEN DATABASE C:DATAMYDATA1 OPEN DATABASE D:DATAMYDATA2 OPEN DATABASE A:DATAMYDATA3 ________ ?DBC()

      19.商品數(shù)據(jù)庫(kù)中含有兩個(gè)表:商品基本信息表 答案: SPXX.XSJ*XSQK.XSSL

      AND 2 不存在

      DTOC(XSRQ)+SPBH

      (SPXX.DBF)和銷售情況表(XSQK.DBF),表結(jié)構(gòu)分別如下:

      商品基本信息表 | 銷售情況表

      商品編號(hào) SPBH C,6 |流水號(hào) LSH C,6

      商品名稱 SPMC C,20 |銷售日期 XSRQ D

      進(jìn)貨價(jià) JHJ N,12,2 |商品編號(hào)

      SPBH

      C,6 銷售價(jià) XSJ N,12,2 |銷售數(shù)量 XSSL N,8,2 備注 BZ M 用SELECT-SQL命令實(shí)現(xiàn)查詢1999年9月1日所銷售的

      各種商品的名稱、銷售量和銷售總額,并按銷售量從小到

      大排序的語(yǔ)句是:

      select SPXX.SPMC, SUM(XSQK.XSSL)AS 銷售量, SUM(_______)AS 銷售總額;FROM XSQK,SPXX;WHERE XSQK.SPBH=SPXX.SPBH _______ XSQK.XSRQ ={1999/9/1};INTO CURSOR cXstmp;GROUP BY 1(或SPMC);ORDER BY _______ 臨時(shí)表cXstmp不能使用APPEND或DELETE命令對(duì)該表

      添加或刪除記錄,當(dāng)執(zhí)行USE IN cXstmp命令后,該臨時(shí)

      表將_______。

      如果要對(duì)xsqk.dbf按銷售日期升序排序,在銷售日

      期相同的情況下,按商品編號(hào)升序排序,則索引表達(dá)式為

      _______。

      20.根據(jù)上題提供的spxx.dbf和xsqk.dbf創(chuàng)建表單,該表 答案: XSQK、SPXX 及它們之間的關(guān)系

      SPXX.SPBH,XSQK.SPBH,SPXX.XSJ XSQK.XSSL*SPXX.XSJ 單用來(lái)錄入每筆銷售業(yè)務(wù)。

      表單的數(shù)據(jù)環(huán)境包括________。

      表單中商品編號(hào)為組合框,它的RowSource為 ________,ControlSource為______,銷售價(jià)文本框的

      ControlSource為______。

      輸入銷售數(shù)量以后打回車鍵,此時(shí)自動(dòng)顯示銷售金額,則

      銷售數(shù)量文本框的Valid事件代碼為:(銷售金額文本框的

      Name屬性值為Txtxse)

      Thisform.Txtxse.Value=_______ 21.閱讀下列程序,寫結(jié)果:

      SET TALK OFF S='ABCDEF' N=LEN(S)K=1

      DO WHILE K<=N ?SUBS(S,K,N-K)K=K+1 ENDDO

      上述程序運(yùn)行以后,顯示內(nèi)容的前二行為________,_______。

      答案: ABCDE,BCDE

      22.?dāng)?shù)據(jù)的獨(dú)立性是指數(shù)據(jù)和______之間相互獨(dú)立。答案: 應(yīng)用程序

      23.VFP中表單文件以_______擴(kuò)展名存貯,通過(guò)______屬性來(lái)引用表單對(duì)象。而Caption屬性是設(shè)置表單標(biāo)題欄中的信息。

      答案: SCX,NAME

      24.VFP系統(tǒng)中,可以使用_______命令運(yùn)行程序文件。

      開發(fā)應(yīng)用程序,建立事件循環(huán)的命令是______。

      答案: DO READ EVENT

      25.將控制綁定到一個(gè)字段,移動(dòng)記錄后字段的值發(fā)生變化,這時(shí)對(duì)象的_______ 屬性的值也隨之變化。

      答案: VALUE

      26.如果要讓一個(gè)文本框的初值設(shè)置為當(dāng)前日期且不能更改,則在該文本框的______ 事件中設(shè)置代碼為This.Value=DATE(),同時(shí)要將它的______屬性設(shè)置為.F.。

      答案: INIT,ENABLED

      27.如果在主表中刪除一條記錄,要求子表中的相關(guān)記錄自動(dòng)刪除,則參照完整性的刪除規(guī)則應(yīng)設(shè)置成_______。答案: 級(jí)聯(lián)

      28.對(duì)于列表框,當(dāng)其_______發(fā)生變化時(shí),將觸發(fā)InteractiveChange事件。

      答案: VALUE 29.恢復(fù)Visual FoxPro 5.0系統(tǒng)菜單的命令是_______。

      答案: SET SYSMENU TO DEFAULT 30.如果要讓表單第一次顯示時(shí)自動(dòng)位于主窗口中央,則應(yīng)該將表單的_______屬性設(shè)置值為.T.。

      答案: AutoCenter 31.選項(xiàng)按鈕組是_______對(duì)象,它的Value屬性表明用戶選定了哪個(gè)按鈕。假定現(xiàn)有一個(gè)選項(xiàng)按扭組有六個(gè)選項(xiàng)按鈕,該選項(xiàng)按鈕組的ControlSource 屬性值是一個(gè)整型字段,如果用戶選擇了第四個(gè)按鈕,則選項(xiàng)按鈕組的Value屬性值為_______。

      答案: 容器,4 32.利用查詢?cè)O(shè)計(jì)器設(shè)計(jì)查詢,可以實(shí)現(xiàn)多項(xiàng)功能,查詢?cè)O(shè)計(jì)器最終實(shí)質(zhì)上是生成一條_______ 語(yǔ)句。

      答案: select-SQL 33.組合框的數(shù)據(jù)源由RowSource屬性和RowSourceType屬性給定,如果RowSource屬性

      中寫入一條SELECT-SQL語(yǔ)句,則它的RowSourceType屬性應(yīng)設(shè)置為_______。

      答案: 3-查詢

      34.某表單中有一“下一記錄”的記錄定位命令按鈕CmdNext,請(qǐng)完成該按鈕的Click事件代碼:(假定該表單所用到的表為XS.DBF)

      SELECT XS ______ IF EOF()GO BOTTOM This.______ &&讓該按鈕不響應(yīng)用戶操作 ELSE Thisform.Refresh ENDIF 答案: SKIP ENABLED=.F.35.設(shè)JS.DBF及JSRK.DBF的結(jié)構(gòu)如下: 答案: JS.GH=JSRK.GH 1 VALUE

      教師表 教師任課表

      字段名 類型 寬度 含義 字段名類型 寬度 含

      GH C 5 工號(hào) GH C 5 工

      號(hào) NAME C 8 姓名 KCH C 2 課

      程號(hào) XB C 2 性別 KCMC C 30 課程名稱

      XIMT C 20 系

      名 KSS N 5 課

      時(shí)數(shù)

      并且分別對(duì)GH建立結(jié)構(gòu)復(fù)合索引,它們現(xiàn)有數(shù)據(jù)如下:

      教師(JS.DBF)

      工號(hào) 姓名 性別 系名 04001 陳子亮 男 管理工程系 04002 趙東萍 女 管理工程系 04003 王一平男 計(jì)算機(jī)系 04004 陳志敏 男 中文系

      教師任課表(JSRK.DBF)

      工號(hào) 課程代號(hào) 課程名稱 課時(shí)數(shù)

      04001 1 會(huì)計(jì)電算化 64 04001 2 會(huì)計(jì)電算化課程設(shè)計(jì) 42 04002 3 軟件工程 48 04002 4 C++ 64 04003 2 會(huì)計(jì)電算化 64 04004 5 中國(guó)文學(xué) 48 下列命令用來(lái)查詢每個(gè)教師的任課課時(shí)總數(shù),請(qǐng)將其寫完

      整:

      select js.gh,js.xm,SUM(jsrk.kss)AS 總課時(shí) ; FROM JS,JSRK ; WHERE _______;

      INTO CURSOR cJsrkzstmp ; GROUP BY _______; ORDER BY GH 臨時(shí)表cJsrkzstmp的記錄數(shù)為_______。

      完善下列命令,實(shí)現(xiàn)向 JSRK表中插入一條新記錄,記錄

      內(nèi)容是: '04003'(工號(hào)),'6'(課程代號(hào)),'計(jì)算機(jī)

      概論'(課程名稱),32(課時(shí)數(shù))

      INSERT INTO jsrk(gh,kch,kcmc,kss)______('04003','6','計(jì)算機(jī)概論',32)36.如果對(duì)上題JSRK.DBF先按工號(hào)從小到大排序,在工號(hào)相等的情況下,再按課程號(hào)從小到大排序,則索引表達(dá)式為_______。

      答案: GH+KCH 37.已知教師表(JS.DBF)的結(jié)構(gòu)和內(nèi)容如35題所示,閱 答案: 3,1 讀下列程序段: N=0 M=0 SELE JS SCAN WHILE XB='男' N=N+1 ENDSCAN M=RECCOUNT()-N **RECCOUNT()為統(tǒng)計(jì)記錄數(shù)函數(shù)

      執(zhí)行上述程序后,N,M的值分別為_______,_______。

      38.已知教師工資表(JSGZ.DBF)的結(jié)構(gòu)如下: 答案: VALUE 男,女 JSGZ.XB 工號(hào)(GH)C,5 姓名(XM)C,8 性別(XB)C,2 基本工資(JBGZ)N,6 職務(wù)工資(ZWGZ)N,6 獎(jiǎng)金(JJ)N,4 將上述JSGZ.DBF加入到表單的數(shù)據(jù)環(huán)境中,創(chuàng)建表單:

      要求當(dāng)按下求實(shí)發(fā)工資按鈕時(shí),顯示該職工的實(shí)發(fā)工資。

      顯示實(shí)發(fā)工資的文本框的NAME屬性的值為Txtsfgz。

      該按鈕的Click事件的代碼如下,請(qǐng)將它寫完整: Local lnsfgz

      lnsfgz=jsgz.jbgz+jsgz.zwgz+jsgz.jj This.Parent.Txtsfgz.______=lnsfgz Thisform.refresh

      表單中的性別設(shè)置成組合框,如果它的RowSourceType設(shè)

      置成1-值,則它的RowSource為 _______,該文本框的

      ControlSource為_______。

      39.下列程序是用來(lái)求長(zhǎng)方形的面積,請(qǐng)將它寫完整:

      X=3 Y=5

      S=AREA(X,Y)?S

      FUNCTION AREA _______ S1=X*Y

      RETURN ________ 答案: PARAMETERS X,Y S1

      40. 表達(dá)式{09/18/2000}-{09/20/2000}的值是 _________。

      表達(dá)式INT(6.26*2)%ROUND(3.14,0)的值是___________。

      答案:-2 0

      41.對(duì)于數(shù)據(jù)綁定型控件,通過(guò)對(duì) ___________ 屬性的設(shè)置來(lái)綁定控制和數(shù)據(jù)源。

      答案: ControlSoure

      42.執(zhí)行下列程序段后,X(1,1)和x(2,2)的值分別為___________。

      程序清單如下: DIMENSION X(6,10)X=123 答案: 123,123 43.恢復(fù)主菜單系統(tǒng)為默認(rèn)的 Visual FoxPro 系統(tǒng)菜單狀態(tài)的命令是___________。

      答案: SET SYSMENU TO DEFALUT 44.不能用 ___________ 和通用型字段構(gòu)造索引表達(dá)式創(chuàng)建索引。

      答案: 備注型

      45.如果要將某選項(xiàng)按鈕組上的按鈕設(shè)置為5個(gè),應(yīng)把選項(xiàng)按鈕組的 ___________ 屬性值設(shè)定為5。

      答案: ButtonCount 46.采用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法設(shè)計(jì)的應(yīng)用程序,其功能的實(shí)現(xiàn)是由 ___________ 驅(qū)動(dòng)的。

      答案: 事件

      47.VFP系統(tǒng)中,打開項(xiàng)目文件的命令是______。

      答案: MODIFY PROJECT 48.對(duì)象是______的實(shí)例。

      答案: 類

      49.打開一個(gè)空表,函數(shù)EOF()的值為______。

      答案:.T.50.數(shù)據(jù)庫(kù)表可以設(shè)置長(zhǎng)表名,但存貯在磁盤上的文件名是______。

      答案: 表名

      51.如果數(shù)據(jù)庫(kù)表的插入觸發(fā)器設(shè)置為.F.,則當(dāng)向該表中插入一條空記錄時(shí),屏幕顯示

      ______。

      答案: 觸發(fā)器失敗

      52.組合框兼有下拉列表框和______的功能。

      答案: 文本框

      53.在SELECT-SQL語(yǔ)句中,DISTINCT選項(xiàng)的功能是______。

      答案: 排除查詢結(jié)果中所有重復(fù)的行 54.在表單中,一個(gè)OLE綁定型控件利用表中的______型字段顯示一個(gè)OLE對(duì)象。

      答案: 通用

      55.已知N='1',M='2',X12='good',則表達(dá)式X&N&M的值為_______。

      答案: 'GOOD'

      56.下列程序用來(lái)求0~100偶數(shù)之和,請(qǐng)將它寫完整:

      N=0 S=0

      DO WHILE.T.IF N>100 _______ ELSE S=S+N ENDIF N=N+2 ENDDO

      答案: EXIT

      57.本地視圖的______ 表隨視圖的打開而自動(dòng)地打開,但是不隨視圖的關(guān)閉而關(guān)閉。答案: 基

      58.在VFP系統(tǒng)中,多個(gè)對(duì)象的同一個(gè)屬性(如width屬性)可以同時(shí)設(shè)定,設(shè)定前必須同時(shí)_______這些對(duì)象。

      答案: 選定

      59.下述命令執(zhí)行后,S4的值為______________.S1=' ABCD ' S2=' EFG '

      S3=ALLT(S1)+ALLT(S2)

      S4=SUBSTR(S3,5,2)答案: 'EF' 60.答案: D: DATA MYDATA2.DBC

      假定有三個(gè)數(shù)據(jù)庫(kù)文件MYDATA1,MYDATA2,MYDATA3,它們

      分別存放在C盤的DATA目錄,D盤的DATA目錄,A盤的

      DATA目錄,執(zhí)行下列程序以后,DBC()函數(shù)的值為 _______。

      OPEN DATABASE C:DATAMYDATA1 OPEN DATABASE D:DATAMYDATA2 OPEN DATABASE A:DATAMYDATA3 SET DATABASE TO MYDATA2 ?DBC()61.商品數(shù)據(jù)庫(kù)中有兩個(gè)表:商品基本信息表 答案: VAL IN DTOC(XSRQ)+SPBH(spxx.dbf)和銷售情況表(xsqk.dbf),表結(jié)構(gòu)分別如下

      ,且spxx表已經(jīng)建立結(jié)構(gòu)復(fù)合索引,索引表達(dá)式為spbh。

      商品基本信息表(spxx.dbf)銷售情況表(xsqk.dbf)

      商品編號(hào) spbh C,6 流水號(hào) lsh C, 6 商品名稱 spmc C,20 銷售日期 xs rq D 進(jìn)貨價(jià) jhj N,12,2 商品編號(hào)

      spbh C,6 銷售價(jià) xsj N,12,2 銷售數(shù)量

      xssl N,8,2 備注 bz M 銷售金額 xs e N,12,2 1)

      要求在向銷售情況表中添加記錄時(shí),對(duì)流水號(hào)自動(dòng)加1,對(duì)位數(shù)不足字段寬度的流水號(hào),在字符串前以字符“0”補(bǔ)

      足,如“125”補(bǔ)“0”后應(yīng)為“000125”。下列程序段就是用來(lái)

      完成上述功能,請(qǐng)將它寫完整:

      SELECT MAX(lsh)FROM xsqk INTO CURSOR cMaxlshtmp LOCAL lcMaxlsh,lcNextlsh

      lcMaxlsh= cMaxlshtmp.lsh &&

      求出

      xsqk表中最大的流水號(hào)

      lcNextlsh=_______(lcMaxlsh)+1 &&下一個(gè)流

      水號(hào)在最大流水號(hào)上加1

      INSERT INTO xsqk(lsh)VALUE(PADL(lcNextlsh,5,'0'))USE ______

      cMaxlshtmp &&將臨

      時(shí)表關(guān)閉

      2)如果對(duì)xsqk.dbf表按銷售日期升序排序,在銷售日期

      相同的情況下,按商品編號(hào)升序排序,則索引表達(dá)

      式為 ______。

      62.根據(jù)上題提供的spxx.dbf和xsqk.dbf創(chuàng)建下列表單,答案: SPXX.SPBH , XSQK.XSSL

      SPBH

      SPXX.XSJ*XSQK.XSSL TA

      該表單用來(lái)錄入每筆銷售業(yè)務(wù)。

      表單中商品編號(hào)為組合框,它的RowSource為______。

      銷售數(shù)量文本框的ControlSource為_______。

      當(dāng)商品編號(hào)發(fā)生變化時(shí),銷售價(jià)和銷售金額也相應(yīng)地發(fā)生

      變化,則表單中組合框的InteractiveChange事件的代碼

      為:(銷售價(jià)和銷售金額文本框的Name屬性值分別

      為 Txtxsj,Txtxse)Local lcspbh lcspbh=This.Value

      SEEK lcspbh ORDER _______ IN spxx Thisform.Txtxse.Value=_____________ Thisform.Txtxsj.Refresh

      上述表單的數(shù)據(jù)環(huán)境包括xsqk.dbf,spxx.dbf及它們之間 的關(guān)系,并且xsqk表的數(shù)據(jù)緩沖方式為開放式行緩沖,要

      求當(dāng)按下存盤按鈕時(shí),將錄入的數(shù)據(jù)真正寫入xsqk表中,則存盤按鈕的Click事件代碼中一定包含一條_______函數(shù)。

      63.運(yùn)行下列程序段以后,顯示內(nèi)容的前二行為:_______、________。

      【程序段清單】 SET TALK OFF S='ABCDEF' N=LEN(S)K=1 DO WHILE K<=N ?SUBS(S,K,N-K)K=K+1 ENDDO 答案: 'ABCDE','BCDE' ' 64.VFP系統(tǒng)中,終止事件循環(huán)的命令是:________。答案: CLEAR EVFNT 65.OOP中文含義為:______。

      答案: 面向?qū)ο蟪绦蛟O(shè)計(jì) 66.數(shù)據(jù)處理是對(duì)各種類型的數(shù)據(jù)進(jìn)行_________、____________、分類、計(jì)算、加工、檢索和傳輸?shù)倪^(guò)程。

      答案: 收集、存儲(chǔ)

      67.數(shù)據(jù)庫(kù)一般要求有最小的冗余度,是指數(shù)據(jù)盡可能____________。數(shù)據(jù)庫(kù)的資源_______性,即數(shù)據(jù)庫(kù)以最優(yōu)的方式服務(wù)于一個(gè)或多個(gè)應(yīng)用程序。據(jù)庫(kù)的數(shù)據(jù)___________性,即數(shù)據(jù)的存儲(chǔ)盡可能獨(dú)立于使用它的應(yīng)用程序。答案: 不重復(fù)

      共享 獨(dú)立

      68.表達(dá)式STR(YEAR(DATE())+10)的數(shù)據(jù)類型為 ______。

      答案: C

      69.項(xiàng)目管理器的功能是組織和管理所有與項(xiàng)目有關(guān)的類型的________。答案: 文件

      70.在數(shù)據(jù)庫(kù)系統(tǒng)中,關(guān)系模型的基本結(jié)構(gòu)是一張__________。

      答案: 二維表

      71.按所用的數(shù)據(jù)模型來(lái)分,VFP屬于___________數(shù)據(jù)庫(kù)管理系統(tǒng)。

      答案: 關(guān)系型

      72.英文縮寫‘DBMS’的中文含義是

      __________________。DBMS主要由_____________、存儲(chǔ)管理器和事務(wù)管理器三部分組成。

      答案: 數(shù)據(jù)庫(kù)管理系統(tǒng) 查詢管理器

      73.復(fù)選框控件可以為三種狀態(tài),其Value 屬性值分別為.F.、.T.或 __________。

      答案: NULL

      74.使用報(bào)表打印表中的數(shù)據(jù),需在報(bào)表中將與表字段相關(guān)的控件放在報(bào)表中的 ___________ 帶區(qū)。

      答案: 細(xì)節(jié)

      75.如果要物理刪除帶有刪除標(biāo)志的記錄,可使用命令___________,但在該命令的執(zhí)行前,必須將表以___________方式打開。

      答案: PACK,獨(dú)占

      76.Visual FoxPro系統(tǒng)中,表的觸發(fā)器是綁定在表上的 ___________,當(dāng)表中的任何記錄被指定的操作命令修改時(shí),觸發(fā)器被激活。

      答案: 表達(dá)式

      77.從二維表的后選關(guān)鍵字中,選出一個(gè)可作為____________。

      答案: 主關(guān)鍵字 78.XS(學(xué)生)表的結(jié)構(gòu)

      為: 答案: TABLE xs

      ZZMM L

      字段名 中文含義 類型 長(zhǎng)度 XH 學(xué)號(hào) 字符 6 XM 姓名 字符 8 XB 性別 字符 2 CSRQ 出生日期 日期 8 ZZMM 政治面貌 邏輯 1

      BZ 備注 備注 4 下列命令用來(lái)創(chuàng)建XS表的結(jié)構(gòu),請(qǐng)將它完善: CREATE ___________;

      (XH C(6),XM C(8),XB C(2),CSRQ D, __________ ,BZ M)79.答案: Cdd 已知學(xué)生成績(jī)表(CJ.DBF)中含有學(xué)號(hào)(XH,C,6)、課程代號(hào)

      (KCDH,C,2)和成績(jī)(CJ,N,3)字段。為了給每個(gè)成績(jī)?cè)u(píng)定成

      績(jī)等級(jí)(優(yōu)、良、及格、不及格),在該表所在的數(shù)據(jù)庫(kù)中

      創(chuàng)建了一個(gè)根據(jù)成績(jī)分?jǐn)?shù)評(píng)定成績(jī)等級(jí)的自定義函數(shù)

      getdd,函數(shù)getdd的代碼如下: FUNCTION getdd PARAMETERS nCj LOCAL cdd cdd=“" DO CASE CASE nCj>=90 cdd=”優(yōu)“ CASE BETWEEN(nCj,80,89)cdd=”良“ CASE BETWEEN(nCj,60,79)cdd=”及格“ CASE nCj<60 cdd=”不及格“ ENDCASE RETURN ________ 注:Visual FoxPro系統(tǒng)函數(shù)BETWEEN()的功能是判

      斷一個(gè)表達(dá)式的值是否在兩個(gè)相同數(shù)據(jù)類型的表達(dá)式的值

      之間。

      80.一張表的主關(guān)鍵字被包含到另一張表中時(shí),在另一張表中稱這些字段為___________。

      答案: 外部關(guān)鍵字

      81.表中的一列稱為__________,它規(guī)定了數(shù)據(jù)的特征;表中的一行稱為一個(gè)__________,它是多個(gè)字段的集

      合。

      每個(gè)字段都必須有一個(gè)____________屬性來(lái)標(biāo)識(shí)該字段。

      答案: 字段,記錄 字段名

      82.表文件的擴(kuò)展名為___________,如果表結(jié)構(gòu)中包含_______類型或_________類型的字段時(shí),會(huì)產(chǎn)生一個(gè)擴(kuò)展名為___________的備注文件。

      答案: DBF 備注,通用 FPT

      83.已知成績(jī)表(cj.dbf)的表結(jié)構(gòu)如下: 答案: 1

      003

      字段名 類型 寬度 含義 xh C 3 學(xué)號(hào) qz N 3,0 其中

      成績(jī) qm N 3,0 期末

      成績(jī)

      表中含有3條記錄,按輸入時(shí)的物理順序排列如下: xh qz qm 001 89 93 002 98 75 003 80 87 該表已創(chuàng)建結(jié)構(gòu)復(fù)合索引如下:

      索引順序 索引名 索引表達(dá)式

      降序 CJA QZ+QM

      升序 CJB STR(QZ)+STR(QM)執(zhí)行如下命令:

      USE CJ ORDER TAG CJA BROWSE

      在瀏覽窗口中學(xué)號(hào)為”002“的記錄顯示在第 _______ 行。

      若在命令窗口中執(zhí)行命令: SET ORDER TO TAG CJB BROWSE 則在瀏覽窗口中學(xué)號(hào)為 _______的記錄顯示在第1行。

      84.在表單的Load、Activate和Init這三個(gè)事件中,________ 事件不能引用表單及表單中的對(duì)象,________事件最后一個(gè)被觸發(fā)。

      答案: ACTIVATE 85.有一表單frmA,該表單中包含一個(gè)頁(yè)框pgfB,頁(yè)框中包含的頁(yè)面數(shù)未知,在刷新表單時(shí),為了刷新頁(yè)框中的所有頁(yè)面,可在頁(yè)框pgfB的REFRESH方法中編寫一段FOR循環(huán)結(jié)構(gòu)的代碼實(shí)現(xiàn),請(qǐng)完善如下代碼:

      FOR i=1 to This._________ This.Pages[i].refresh ENDFOR 答案: PAGECOUNT 86.調(diào)用系統(tǒng)對(duì)話框的系統(tǒng)函數(shù)MessageBox()的語(yǔ)法如下 答案: 32 7 :

      MESSAGEBOX(cMessageText [, nDialogBoxType [, cTitleBarText]])參數(shù):

      cMessageText為字符型參數(shù),指定在對(duì)話框中顯示的

      文本。

      nDialogBoxType為整型參數(shù),指定對(duì)話框中的按鈕和

      圖標(biāo)、顯示對(duì)話框時(shí)的默認(rèn)按鈕以及對(duì)話框的行為。在下

      面的表中,對(duì)話框按鈕值從 0 到 5 指定了對(duì)話框中顯示

      的按鈕。圖標(biāo)值 16、32、64 指定了對(duì)話框中的圖

      標(biāo)。

      cTitleBarText為字符型參數(shù),指定對(duì)話框標(biāo)題欄中的

      文本。

      數(shù)值 對(duì)話框按鈕 數(shù)值

      圖標(biāo)

      0 僅有”確定“ 16 ”

      停止

      “圖標(biāo)

      ”確定“和”取消“ 32 ”*

      屎*“圖標(biāo)

      ”放棄“、”重試“和”忽略“ 48 ”驚嘆號(hào)“圖

      標(biāo)

      ”是“、”否“和”取消“ 64 ”* 畔*(i)“圖標(biāo) 4 ”是“和”否“ 5 ”重試“和”取消“

      Messagebox()函數(shù)的返回值取決于用戶所選擇的按鈕,返

      回值情況如下表所示:

      按 鈕 確定 取消 放棄 重試 忽

      略 是 否

      返回

      值 1 2 3 4

      7

      某應(yīng)用程序在執(zhí)行過(guò)程中出現(xiàn)了如右圖所示的對(duì)話框:

      根據(jù)對(duì)話框所顯示的有關(guān)信息,完善下面程序段: Local nSelect

      nSelect=MessageBox(”刪除嗎?“,4+ ________ ,”刪除

      確認(rèn)“)IF nSelect=6 select js DELETE ENDIF

      如果在出現(xiàn)該對(duì)話框時(shí)選擇”否“,則變量nSelect的值是

      ___________。

      87.已知教師表JS.DBF(含有字段:工號(hào)(GH,C,6), 姓名 答案: AVG(jbgz)as平均工資

      WHERE ximing='信息管理系' GROUP BY ximing(XM,C,8), 基本工資(JBGZ,N,7,2), 系名(XIMING,C,16))。完成下列SQL命令,統(tǒng)計(jì)JS表中”信息管

      理系“ 職工的平均工資。SQL命令如下: SELECT _________;FROM JS;________;INTO CURS JSTMP;_________ 88.

      答案: ALLT(STR(n))ENDSCAN 已知學(xué)生成績(jī)表(CJ.DBF)的結(jié)構(gòu)由學(xué)號(hào)(XH,C,6)、課程

      代號(hào)(KCDH,C,2)和成績(jī)(CJ,N,3)三個(gè)字段組成,下面程序

      段用來(lái)檢查表中的CJ是否小于0,如果小于0,給出提示信

      息。例如:如果第3條記錄的成績(jī)小于0,則顯示提示信息

      為:”第3條記錄的成績(jī)錄入不合法“。完善下列程序段,使它完成上述功能: USE CJ SCAN IF CJ<0 n=RECNO()S =”第“+ ________ +”條記錄的成績(jī)錄入

      不合法“ WAIT S ENDIF _________ ***** 一。表、數(shù)據(jù)字典

      ***** 答案:

      89?!y行存款’表(CK.DBF)的表結(jié)構(gòu)字段組成為: 答案: CREATE TABLE ck(zh C(15)NULL,crrq D,cq N(2,0),je Y)

      ALTER TABLE ck ADD COLUMN BZ M &&修改表結(jié)

      構(gòu)

      APPEND BLANK

      帳號(hào)(ZH,C,15,NULL)

      存入日期(CRRQ,T,8)

      存期(CQ,N,2,0)

      金額(JE,Y,8)

      要求寫出創(chuàng)建CK表的SQL語(yǔ)句_________。

      為該表增加一個(gè)備注型字段BZ的命令是_____________。

      增加一條空記錄的命令是____________。90。在js表中要?jiǎng)h除所有工齡(字段名gl)大于60的記錄的SQL命令是DELETE ________ js WHERE _______;

      要徹底刪除這些記錄,可用_______命令,但這一命令的實(shí)施,必須要求表以________方式打開。

      答案: FROM,gl>60 PACK 獨(dú)占

      91。在教師表(js)中按如下要求更改基本工資(jbgz)答案: SET

      jbgz+20 jbgz>=20 :

      工齡在10年以下(不含10年)基本工資加

      工齡在10--19年 基本工資加

      工齡在20年以上(含20年)基本工資加

      可用UPDATE命令完成上述更改: update js

      _______ jbgz=IIF(js.gl<10,_________,;

      IIF(________,jbgz+50,jbgz+35))92。如果學(xué)生表(xs.dbf)已在當(dāng)前工作區(qū)中打開,要篩選出專業(yè)代號(hào)zydh為“102001”的記錄的命令是____________;要取消該篩選的命令是____________。答案: SET FILTER TO zydh=”102001“ SET FILTER TO 93。執(zhí)行下列一組命令: 答案: 1

      stu.T..T.stu CLOSE TABLES ALL select 0 USE xs ALIAS stu 則函數(shù)SELECT()的值是___________; ALIAS()的值是____________。

      再執(zhí)行命令: USE js IN 0 則函數(shù)USED(”xs“)的值是__________;USED(”js“)的值是__________;ALIAS()的值是__________。94。執(zhí)行下列一組命令:

      SET EXCLUSIVE OFF USE js USE xs EXCLUSIVE IN 0 則js表的打開方式是___________;xs表的打開方式是___________。

      答案: 共享 獨(dú)占

      95。已知xs表的結(jié)構(gòu)復(fù)合索引中已創(chuàng)建xh字段的普通索引,索引標(biāo)識(shí)為xh,在沒(méi)有設(shè)置主控索引的情況下,要用SEEK命令定位到學(xué)號(hào)“98010”的記錄上,則該命令為_______________。答案: SEEK ”98010“ ORDER TAG xh 96。打開一張表時(shí),___________索引文件將自動(dòng)打開,表關(guān)閉時(shí)它將自動(dòng)關(guān)閉。答案: 結(jié)構(gòu)復(fù)合

      97。通用型數(shù)據(jù)類型只能用于表中字段的定義,用于存儲(chǔ)___________對(duì)象。答案: OLE 98。如要實(shí)現(xiàn)多字段排序,即先按班級(jí)(bj,N,1)順序排序,同班的同學(xué)再按出生日期(csrq,D)順序排序,同班且出生日期也相同的再按性別(xb,C,2)順序排序,其索引表達(dá)式為___________。答案: STR(bj)+DTOC(csrq)+xb

      99。記錄的定位方式有________定位、____________定位和條件定位三種。答案: 絕對(duì)

      相對(duì)

      100。打開一張空表,在不移動(dòng)記錄指針的情況下,函數(shù) 答案:.T..T.1

      .F..F.1

      BOF()的值是_________;函數(shù)EOF()的值是 _________;函數(shù)RECNO()的值是_________。

      如果打開的表中有一條記錄,在不移動(dòng)記錄指針的情況下

      ,函數(shù)BOF()的值是_________;函數(shù)EOF()的值是

      _________;函數(shù)RECNO()的值是_________。101。如果子表中已有相關(guān)記錄,修改主表記錄的主關(guān)鍵字時(shí),要求同時(shí)修改子表中相關(guān)記錄,則參照完整性的___________規(guī)則應(yīng)設(shè)置為__________。答案: 更新

      級(jí)聯(lián)

      102。不允許子表增加或修改記錄后出現(xiàn)“孤立記錄”,則參照完整性的___________規(guī)則應(yīng)設(shè)置為____________。答案:插入

      限制

      103。對(duì)數(shù)據(jù)庫(kù)表增加新記錄時(shí),為某一字段自動(dòng)給定一個(gè)初始值,這個(gè)值稱為___________。答案: 默認(rèn)值

      104。數(shù)據(jù)庫(kù)中的每一張表能建立_____個(gè)主索引。

      如某字段定義為候選索引或主索引,要求該字段的值必須具有_________性。

      索引可分為多種類型,其中________類型只適用于數(shù)據(jù)庫(kù)表。答案: 1

      唯一 主索引

      105。參照完整性只有在________之間才能建立,以保持不同表之間數(shù)據(jù)的__________.如果要在課程表與學(xué)生成績(jī)表之間設(shè)置參照完整性,則首先必須建立它們之間的_________ 關(guān)系。如果修改了課程表中課程代號(hào)后要求自動(dòng)更新學(xué)生成績(jī)表

      中相關(guān)記錄的課程代號(hào),則應(yīng)設(shè)置更新規(guī)則為________;如果課程表中沒(méi)有的課程代號(hào)禁止插入到學(xué)生 成績(jī)表中,則應(yīng)設(shè)置插入規(guī)則為_________。答案: 數(shù)據(jù)庫(kù)表、一致性、永久

      級(jí)聯(lián)、限制。

      106。觸發(fā)器指定一個(gè)規(guī)則,這個(gè)規(guī)則是一個(gè)____________。當(dāng)某個(gè)命令或事件發(fā)生后,將自動(dòng)觸發(fā)相關(guān)觸發(fā)器的執(zhí)行,計(jì)算邏輯表達(dá)式的值,如果返回值是________,將不執(zhí)行此命令或事件。答案: 邏輯表達(dá)式.F.107。紐帶表的作用是把___________分解為兩個(gè)_________。答案:多對(duì)多關(guān)系

      一對(duì)多關(guān)系

      108。某公司數(shù)據(jù)庫(kù)中雇員表含有兩個(gè)日期型字段:出生日期和雇傭日期,為了避免雇傭15歲(包括15歲)以下的童工,應(yīng)為該表設(shè)置________有效性規(guī)則,規(guī)則表達(dá)式為____________。答案:記錄級(jí)

      year(雇傭日期)-year(出生日期)>15 或:(雇傭日期-出生日期)/365>15 109。在數(shù)據(jù)庫(kù)jxsj中有視圖vkccj,寫出用DBGETPROP()函數(shù)測(cè)試生成該視圖的SQL語(yǔ)句的函數(shù)表達(dá)式______。答案: DBGETPROP('vkccj','VIEW','SQL')

      110。已知某公司數(shù)據(jù)庫(kù)中包含供貨商表和商品表,表結(jié)構(gòu)分別如下:

      供貨商表的表結(jié)構(gòu) : | 商品表的表結(jié)構(gòu):

      供應(yīng)商ID,N(20)| 產(chǎn)品ID,N(20)

      公司名稱,C(40)| 產(chǎn)品名稱,C(40)

      聯(lián)系人姓名,C(30)| 供應(yīng)商ID,N(20)

      聯(lián)系人頭銜,C(30)| 類別ID,N(20)

      地址,C(60)| 單位數(shù)量,C(20)

      城市,C(15)| 單價(jià),N(20,2)

      地區(qū),C(15)| 庫(kù)存量,N(20)

      郵政編碼,C(10)| 訂購(gòu)量,N(20)

      國(guó)家,C(15)| 電話,C(24)|

      如所有的商品都是來(lái)自于已知的供貨商,則這兩張表的關(guān)系是_________關(guān)系,其中主表是______表。已知商品表的主關(guān)鍵字是“產(chǎn)品ID”,供貨商表的主關(guān)鍵字是“供應(yīng)商ID”,則該字段在商品表中稱為 __________。如果要在這兩張表之間建立永久關(guān)系,則首先應(yīng)該在主表中以_________字段為索引關(guān)鍵字建立主索引,在子表中以________字段為索引關(guān)鍵字建立普通索引。答案: 一對(duì)多,供貨商,外部關(guān)鍵字,供應(yīng)商ID,供應(yīng)商ID

      一、選擇題

      1.在VisualFoxPro系統(tǒng)中,下列命名中不能作為變量名的是_____________。

      A.姓名 B.2005 姓名 C.A2005 D._2005學(xué)生

      2.在VisualFoxPro系統(tǒng)中,下列表示中不屬于常量的是_____________。

      A.[NULL] B.nul C.”NULL“ D..NULL.3.函數(shù)ROUND(5.64,-1)的返回值是_____________。A.5 B.5.6 C.0 D.10 4.執(zhí)行下列命令后,屏幕上顯示的結(jié)果是_____________。nX=3.14159 nLen=8 nDec=3

      ?STR(nX,nLen,nDec)

      A.3.114159 B.3 C.3.142 D.3.14 5.下列關(guān)于數(shù)據(jù)庫(kù)、表和索引的敘述中,正確的是_____________。

      A.打開一個(gè)數(shù)據(jù)庫(kù),將自動(dòng)打開所有的數(shù)據(jù)庫(kù)表 B.打開一個(gè)數(shù)據(jù)庫(kù)表,將自動(dòng)打開其所有對(duì)應(yīng)的數(shù)據(jù)庫(kù)

      C.打開一個(gè)數(shù)據(jù)庫(kù)表,將自動(dòng)打開該表的所有索引 D.關(guān)閉一個(gè)數(shù)據(jù)庫(kù)表,將自動(dòng)關(guān)閉該表的所有索引 6.有如下一段程序: CLOSE TABLES ALL USE xs select 3 USE kc USE cj IN 0 上述程序執(zhí)行后,當(dāng)前系統(tǒng)中使用工作區(qū)及打開的表的情況分別是_____________。

      A.0號(hào)工作區(qū): cj表;3號(hào)工作區(qū): kc表

      B.1號(hào)工作區(qū): xs表;2號(hào)工作區(qū): cj表;3號(hào)工作區(qū): kc表

      C.0號(hào)工作區(qū): xs表;1號(hào)工作區(qū): cj表;3號(hào)工作區(qū): kc表

      D.1號(hào)工作區(qū): xs表;3號(hào)工作區(qū):kc表;4號(hào)工作區(qū): cj表;7.在下列有關(guān)表單及其控件的敘述中,錯(cuò)誤的是_____________。

      A.從容器層次來(lái)看,表單集是最高層的容器類,它不可能成為其他對(duì)象的集成部分 B.表格容器控件包含列容器控件 C.頁(yè)控件的PageCount屬性值可以為0 D.列表的ColumnCount屬性可以為負(fù)值

      8.對(duì)于許多控件來(lái)說(shuō),可以通過(guò)ControlSource屬性與數(shù)據(jù)綁定。在下列VFP對(duì)象中,無(wú)ControlSource屬性的是_____________。

      A.標(biāo)簽(Label)B.復(fù)選框(CheckBox)C.選項(xiàng)按鈕組(OptionGroup)D.列表框(ListBox)9.若要將表文件xs.dbf復(fù)制到xs1.dbf文件(假設(shè)xs.dbf未打開,且保存在當(dāng)前默認(rèn)目錄內(nèi)),則可以使用命令_____________。

      A.COPY xs.dbf xs1.dbf B.COPY FILES xs.dbf TO xs1.dbf C.COPY TO xs1 STRU D.COPY TO xs1 10.要在瀏覽窗口中顯示表xs.dbf中職稱(jg c(10))為“江蘇”的記錄(該字段的內(nèi)容不含空格),下列命令中不能實(shí)現(xiàn)此功能的為__________________。A.select * FROM xs WHERE xs.jg==”江蘇“ B.select * FROM xs WHERE left(xs.jg,4)=”江蘇“ C.select * FROM xs WHERE ”江蘇“ $ xs.jg D.select * FROM xs WHERE xs.jg=”江蘇" 11.在中文Visual FoxPro系統(tǒng)中,若設(shè)置SET DATE TO LONG,則表達(dá)式LEN(DTOC({^2005