名师点评如何得知每一个报表的.docx
《名师点评如何得知每一个报表的.docx》由会员分享,可在线阅读,更多相关《名师点评如何得知每一个报表的.docx(92页珍藏版)》请在冰豆网上搜索。
名师点评如何得知每一个报表的
⏹掌握NE5000E/80E/40E产品的体系结构
⏹掌握NE5000E/80E/40E的单板构成
⏹掌握NE5000E/80E/40E换板操作
⏹了解NE5000E/80E/40E升级操作
:
:
如何得知每一個報表的GH和GF之間的筆數?
:
Ans:
可在GH的起始程序,用GETRECN(fm-C[,to-C])計算目前兩個鍵值間筆數。
:
:
對一檔案做SETWHILEFROMXTOY後,如何求得X和Y之間的筆數?
:
Ans:
Table.RecordCount即可
:
:
請問在lookuplist內使用SQL元件有無方法設定鍵值範圍?
:
Ans:
不能設鍵值範圍,但可在edit的起始程序對SQL做where.
:
:
有關報表掉字(會亂成一團)的問題:
可能發生的情況如下:
:
:
1.只要在DT的行數不是1的時候,幾乎一定會掉字.
:
:
2.也會有預視和印表機印出來不一樣的結果.
:
:
3.Subpanel最容易發生且最明顯.
:
:
4.若僅是很單純的列印(沒有Subpanel),列印大量中文字(用Label或Memo)也會掉字.
:
Ans:
解決方式為:
:
1.在要列印的文字前後加上長度不一的空白,可解決部份問題.若純為Label,則在要列印
:
的Label前多貼一個Label,內容定為數字,顏色設為白色,可以解決全部的掉字問題.
:
2.我的經驗如下最好是使用新細明體的字型.:
3.subpanel內的label或field如掉字,則不要用運算式:
4.label或field的字型改變底線或斜體可能會好一點:
5.顏色改變一下,我測試過黃色可以,但其他顏色不一定可以
:
:
有關報表選擇後的列印問題:
:
:
甲產品(數量)10(DT):
:
(金額)200:
:
乙產品(數量)5:
:
(金額)1000:
:
希望讓USER輸入
(1)只印數量
(2)只印金額(3)兩著都印,如果選(3)則無問題,
:
:
若USER選1OR2則印出來行與行之間會空一行,請問如何解決?
?
:
Ans:
在init設定DT的高度即可.
:
:
請問如何動態決定是否資料關聯?
:
Ans:
RELINVOINVOSUB.Relmode=0代表沒關連.
:
:
如何取得資料字典內的資料表欄位之中文抬頭,謝謝!
:
Ans:
getdict("VDDEMO","ITEM","QUANTITY")
:
:
如何控制印表預覽元件?
:
:
如何控制印表預覽時,只出現word連結,但不要出現excel連結?
:
Ans:
可在rep上貼報表元件->控制面板,然後控制面板可自行設計.
:
:
請問有關多欄位判斷式儲存至另一顯示用欄位的方法:
:
:
如何在表單新增資料時,將已輸入之A、B兩欄位的資料透過條件式運算將其結果存入:
:
C欄位?
而C欄位不輸入只是顯示。
爾後如果A、B兩欄的值有變動,C欄亦需跟著變動.
:
:
遍尋操作手冊及Q&A好像沒找到相關說明(在新增時)?
謝謝!
:
Ans:
在Table的"系統預設"內,設定C欄位=A、B兩欄位的資料運算即可.
:
:
(續)我需要的是A、B兩欄位的資料透過IF....ELSE...ENDIF的'條件運算,非單獨A,B
:
:
欄位的運算.試過子程式控制,但REPLACE時被系統擋掉,原因是非修改模式…:
Ans:
(1)Table的存檔前,執行REPLACE即可:
並判斷Table.state()=3&&新增,2更改,1瀏覽.
:
(2)若要動態顯示是LABEL,則a.此LABEL須設資料表如M_CLAS;b.資料表的存檔後寫:
Label5.Exp.Source="'(總筆數:
'+Alltrim(Str(M_CLAS.LASTREC()))+'筆)'"
Return.t.
:
:
TVDCHECK元件,為何無’起始程序’/’結束程序’/’執行條件’?
:
:
當點選TRUE後如希望處理其他動作(如將其他元件VISIBLE=FALSE)如何控制?
:
Ans:
起始程序可用OnEnterEvent;結束程序可用OnExitEvent!
:
:
有關Gridcopy的問題:
:
:
使用SQL查詢出資料並放在GRID2中,欲COPY到GRID1(TABLE)中應如何作?
:
Ans:
Grid一定要連接Table,才能顯示.所以你可selesqlcopytotempseletable:
appendfromtemp
:
:
請問有辦法取得field的加總值(Totalval)嗎?
:
Ans:
Field.TotalVal就是,但是否加總需設True.
:
:
(續)我是說能將秀出來那個加總值assign給一個edit.text嗎?
:
Ans:
可在Table的移動後,寫assign(edit.text,field.totalval)
:
:
有關check無法即時更新:
:
:
當table只有一筆資料時,剛進入form去查看該check的狀態時,並無法即時反應?
:
:
除非在init重新下refresh()才會正常反應?
?
:
Ans:
LTYPE測試並無此現象,而你的是CTYPE,所以測出來確實有此問題!
:
不過在INIT加Refresh()就會重新抓取.12/29/99'
:
:
Vd2.0網路版可否像Vd1.1不用架server就可以使用網路的功能?
:
Ans:
和VD1.1一樣,但BDE的LOCALSHARE要設成True.
:
:
VDTips:
設計模式常用熱鍵一覽表:
:
C+W存檔C+D鍵盤順序F6DBModuleF9程式編輯:
C+K重整C+E啟動物件預設值F7除錯F11物件編輯器:
C+L對齊C+M套用物件預設值F8執行F12點提示
:
:
報表設計大難題,VD要如何做到橫向累計效果?
?
:
:
請教各位...我有一支報表格式如下:
:
DT:
:
1:
field01field02field03field01:
:
PFSUM01SUM02SUM03:
:
2:
203040:
:
PFLABEL01LABEL02LABEL03:
:
3:
205090←問題:
:
第2行是用SUM得到合計ok,
:
:
現在我要做第3行橫向累計,用多個LABEL元件,並用運算式分別設定:
:
:
TRAN(SUM01.VALUE,'@N10'):
:
TRAN(SUM02.VALUE+VAL(LABEL01.CAPTION),'@N10'):
:
TRAN(SUM03.VALUE+VAL(LABEL02.CAPTION),'@N10'):
:
跑出來結果只有SUM01,SUM02,SUM03沒有LABEL的累加值,為什麼會這樣呢?
:
:
後來我把LABEL換FIELD元件來做,同樣在運算式設定:
:
:
TRAN(SUM01.VALUE,'@N10'):
:
TRAN(SUM02.VALUE+VAL(FIELD01.TEXT),'@N10'):
:
TRAN(SUM03.VALUE+VAL(FIELD02.TEXT),'@N10'):
:
卻出現FIELD元件沒有TEXT屬性?
請問我該怎麼做呢?
TKS!
!
:
Ans:
TRAN(SUM01.VALUE,'@N10'):
TRAN(SUM01.VALUE+SUM02.VALUE,'@N10'):
TRAN(SUM01.VALUE+SUM02.VALUE+SUM03.VALUE,'@N10'),應該可以!
:
:
報表選印表機的問題?
:
:
在印表畫面中,有一個'版面設定'可以讓USER自行選擇印表機,可是為什麼每次印表時,:
:
該印表機都會回到'系統預設印表機'呢?
若USER不把想要印表的印表機給設成'預設'時,:
:
將會發生想要印表時,都要再去選一次印表機,這樣不是很不方便嗎?
:
Ans:
這是大部分的report設計方式規格,如果你要讓user設定,需自行開一table儲存:
然後在印表前,動態設定要印至哪一台印表機.
:
:
在Grid中Field的"執行條件"判斷是否已執行過沖帳作業,如果已執行就無法做更改的
:
:
動作,但卻無法自動顯示警告訊息,所以才在init以下設計程式:
:
:
IFARV02->ARV02_08=1:
:
GRID0.NAME.WHEN.SOURCE=".F.":
:
Navigator0.CANCEL():
:
MESSAGE("本應收帳款已沖帳,無法修改資料!
!
"):
:
ENDIF:
:
RETURN:
:
但是出現Message後,卻仍可做修改的動作,所以才想做按下Esc鍵,以離開此筆資料.:
Ans:
你最好在Table的更新前,判斷是否可更新比較好控制!
:
:
有關於報表”印表路徑”PageSetup()問題1?
?
:
:
若想用一個TABLE(DBF)去管理系統中所有報表及其使用之列印機種及位置,是否可行?
?
:
:
(看過VF/VB所寫的程式,好像都是如此管理的),但因為VD之特性必需先開啟報表,才能
:
:
改變或得知該報表之預設印表機名稱路徑及紙張大小…..?
:
:
如果可行(又REPX.PageSetup()只能在REPnOPEN後方能呼叫),請問應如何才能按一
:
:
BUTTON去呼叫WINDOWS的印表機管理設定畫面?
?
:
Ans:
VD並無直接呼叫WINDOWS的印表機管理設定畫面指令,VD的特性需先開啟報表,
:
才能改變或得知該報表之預設印表機名稱路徑及紙張大小,不過你可以open但不顯示,
:
newrep()現在有四個參數,newrep('test','',.f.)即讓報表open但不顯示
:
:
有關於報表”印表路徑”PageSetup()問題2?
?
:
:
請問應如何才能如ASSIGN(REPX.DefaultPaperSize,'Letter81/2*11in'),:
:
改變該報表之預設印表機?
:
Ans:
有一個功能函數getprint(n)可以抓取windows的印表機,如你要改變印表機,
:
只要在report的init下REPX.DefaultPrinter=getprint(n).
:
:
直接印表的問題?
:
:
在FORM中有一BUTTON,執行程序是TEST(),程式如下:
:
:
AA=NEWREP("PASS_REP","",.F.):
:
AA.PRINT():
:
AA.CLOSE():
:
RETURN:
:
以上是不經預覽而直接印表,可是在執行時,畫面會閃動一下,因為會很快的開啟REP,
:
:
然後印表資料丟到印表機,接著就關閉REP…怎麼做才可以不用看到此閃動畫面呢?
:
Ans:
你的作法是正確的,目前沒有其他方法.
:
:
REP轉EXCEL,WORD,FAX在報表抬頭位置可否於系統後抬加入是否使用之參數?
:
:
如此可依客戶之需求或程式售價之高低開放程式師自由發揮控制..
:
Ans:
vd20.exe*.vds-p?
?
?
用_DOS_PARA得到參數,在rep的init去控制報表抬頭位置.
:
:
在報表中使用TABLE1中的欄位關聯兩個TABLE2及TABLE3共三個TABEL,
:
:
列印資料表設為TABLE1為何列印時第一筆的資料內容會亂跳,而無法正常出現?
:
:
大部都是過濾後,最後一筆資料會出現在第一筆而使此第一筆會無法印出?
?
:
Ans:
請傳sampletopeter@
:
或是貼一個RH,然後在RH的起始程序寫table1.refresh()看看(RH高度設1).
:
:
請問為何有些Label(Field)的最後一個字不會被列印出來,有些則會.?
:
Ans:
請將[自動縮放]的屬性設.F.,並將寬度拉寬一點點就可以了,因為報表再計算上可能
:
會有誤差一兩點,所以請改用以上方式.
:
:
請問如何動態加入圖形?
:
:
設計模式下可以加入圖形檔,但在執行模式要如何做?
假如edit0.text中有圖形檔案名稱,:
:
是不是該寫成edit0.text=image0.image?
?
?
…該在哪個event下?
:
Ans:
G=Button0.Glyph,G.LoadFromFile("Test.bmp"),只能用BMP檔.
:
:
(廣告時間)提供功能完整的權限管理,支援VD2.0....
:
:
權限管理在一套完整的系統裡佔著相當重要的角色,目前VD20所支援的權限管理,
:
:
在使用者界面上並不是那麼的容易使用,尤其要教會一般的USER更加困難,:
:
於是作者開發一個多功能的權限管理,讓設計師可以很快的將這個權限管理功能融入
:
:
自己所設計的系統中,並提供範例說明。
其功能如下:
:
:
1.可依照員工資料動態設定MAINMENU功能:
:
2.個別設定每個FORM->TABLE新增、刪除、修改功能:
:
3.個別設定每個FORM->TABLE->FIELD顯示、修改、加密功能:
:
4.個別設定每個FORM->每個物件顯示、執行、修改、加密功能:
:
5.MAINMENU、TABLE、FIELD、物件自動匯入,無須一個一個定義:
:
6.SOURCECODE完全公開,可依照自己的意思加以修改:
:
7.只需在FORM->INIT加入一行程式,就可達到權限管理功能:
:
8.簡易USER操作界面.歡迎洽詢jear@蘇正榮89.01.17.
:
:
STATUSBAR寬度如何設定?
依六.元件使用Q15使用,會顯示無Width之屬性?
:
:
有沒有方法可以設定單獨item之寬度?
:
Ans:
p=StatusBar0.Panels:
P0=p.Items(0):
p0.Width=200
:
:
Navigator中之”控制面版”有何作用?
:
:
當navigator貼在panel上時,若設定”控制面版”,則所有navigator中之功能均無法使用,
:
:
且進入設計模式後,也無法刪除控制面版之設定,必須刪除navigator,再貼一個新的才可以?
:
Ans:
Navigator0.LinkPanel是新加入的屬性,如果有設定,一定要按更改才能編輯!
:
:
ALIASPATH()的問題:
:
:
請問我的系統並非C/S為什麼我在下?
ALIASPATH("VDDEMO")卻傳回空字串呢?
:
Ans:
我測試ALIASPATH("VDDEMO")正常,會傳回路徑,:
請檢查是否有此資料集,或vengine32.dll是否run到舊版
:
:
請問如何直接執行資料重整而不出現資料集的資料表單資料畫面?
:
Ans:
packs('vddemo','*.*')直接重整所有檔案!
:
:
怎麼用_sys_user_info.adduserallinfo(...)?
:
Ans:
寫法:
_sys_user_info.ADDUSERALLINFO('003','004','AAA1','AAA1','AAA1','1',.T.,.T.).
:
:
有關SQLSERVER登錄:
:
:
SQLSERVER7.0環境下,client透過BDENative連上server,active第一個sql物件,都會
:
:
出現uesr及passwd的視窗.:
:
問題1:
曾經自己設計一個login的畫面,取得username及passwd,用logindb()登錄資料庫,
:
:
再activesql物件時,還是會出現user及passwd的視窗:
:
問題2:
權限管理的問題:
vd的帳號管理資料存在vds檔,在多個client端,操作者異動vd
:
:
本身的帳號(getuser()),勢必要更新每個client的vds,或者vds放在網路讓每個操作
:
:
者共用,是否是如此?
還是有其它的方法可用.:
:
問題3:
cs架構中,要異動使用者帳號(比如新增),是不是都要作兩個動作:
:
:
(1)在sqlserver新增使用者:
:
(2)新增同一使用者在vds裡面:
:
PS:
LOGINDB()函數好像沒什麼作用,回傳值永遠是0,但也沒有任何訊息?
:
Ans:
1.我們有專案是使用SQLServer資料庫,用logindb()很正常.:
2.vds放在網路讓每個操作者共用,若還要控制user的功能權,最好開Table自行設計.:
3.沒錯,但通常c/s的架構,我較喜歡用"sa"logindb(),然後開一Table來管理user權限.
:
:
Form關閉時,會在關閉某SQL時發生錯誤?
!
:
:
將Form關閉到一半時,會有Vd2.0錯誤訊息如下:
:
:
invaliduseofkeyword.;Token:
AND;LineNumber:
6.:
:
按確定並關閉VD2程式,接下來在幾個的Accessviolation錯誤訊息後,就會出現“這個
:
:
程式執行的作業無效即將關閉"的Windows錯誤訊息或是Runtime32的一連串錯誤訊息!
:
:
多試幾次後,還會造成系統資源不足很是困擾…,奇怪的是造成錯誤的SQL在Form中,開
:
:
關都沒問題!
?
PS:
如果將Where陳述式拿掉,就沒有上述的問題。
:
Ans:
請在formend程序下:
sql0.active=0;return即可。
:
據我推斷,form結束時,sql元件仍在active狀態,但因sql元件是用form上面元件當做
:
傳入值。
而form一關掉sql元件的傳入值就變成null.會出現您的錯誤訊息狀況……。
:
:
有關SQLDELETE發生錯誤訊息:
:
:
在INVO主檔刪除前程序:
:
:
SQL5.SEND("DELETEFROMINVOSUBWHERETRN_NO=&(SQL0->TRN_NO):
:
RETURN.T.:
:
結果是主檔,副檔都有刪除,但是,會有ERRORMESSAGE:
:
:
"ERRORCREATINGCUSORHANDLE"…….該如何避免?
?
:
Ans:
Q&A有提到,除了select以外,其他的語法要用Execute:
:
SQL5.Execute("DELETEFROMINVOSUBWHERETRN_NO=&(SQL0->TRN_NO)").
:
:
環境MS-SQL,如何將報表中的table,在init時動態換成另一table(即原reopen的功能,
:
:
因reopen不適用於MS-SQL)?
:
Ans1:
通常sql設計報表,是直接select後即可,若要用reopen,需增加一dbf資料集當暫存檔.
:
Ans2:
:
換掉SQL元件的內容,直接在ini下sql0.send('select*fromtable')即可更換。
:
:
Dbase資料庫若用SQL語法會比較慢?
?
(潘孝仁)
:
:
我將進銷存範例中,出貨作業改成全部用SQL指令,發覺速度差變慢很多,這是正常的嗎?
?
:
:
用MS-SQLServer資料庫也會這樣嗎?
?
:
Ans1:
在Form中Dbase用sql應該較快,不過userlock的問題要先測試.我也試過,速度比
:
table快很多才是,主檔和附檔之relation用主檔sql之移動後程序來引發附檔sql之
:
record移動,另外各個lookuplist也用sql動態取得資料,速度都不錯,不過常出現lock
:
檔的問題,變成另外的user無法同時使用,這是目前我無法解決的,是不是在BDE的
:
system的ini將localshare設成true會比較好,就需要訊光指導一下了!
另外若是在report
:
上用同樣的方式來寫,速度好像會慢很多,這點我也很奇怪?
(合泰):
Ans2:
使用SQL指令最好不要關連,用CacheUpdate的方式會比較快,SQLServer應該一樣.
:
:
Dbase資料庫用SQL語法會比較慢?
?
(潘孝仁回合泰解答partI)
:
:
1.現在將SQL0跟SQL1的RELATION刪除,不照書上做關聯,速度快了兩倍,但還是比較慢.
:
:
2.所以我沒有用移動後去啟動SQL1.:
:
3.LOOKUPLIST應該也有關係(大概有十個)所以我再改掉再跟你討論.:
:
4.不過我上次LOOKUPLIST用SQL好像碰到問題,我再試試,無解再問你.
:
:
Dbase資料庫用SQL語法會比較慢?
?
你是對的,只是變麻煩了(潘孝仁回合泰解答partII)
:
:
1.發覺將relation拿掉,就算sqlcommand用where也不會跟著關聯.
:
:
2.放在移動後程序快很多,3.只是變成很麻煩4.其他如客戶名稱,我再試一下如何顯示出來.
:
:
SQL還是很麻煩(GRID怎麼設關聯...等等......)(潘孝仁)
:
:
1.GRID有顯示客戶名稱,沒有設關聯(因為太慢),就顯示不出正確客戶名稱.請問如何處理?
:
:
2.發覺EDIT也不會跟著顯示(不設關聯的話),所以要在移動後重新SELECT而且新增時
:
:
不會跟著清空白.所以得改成LABEL,並且新增前又要將此LABEL清成空白..........:
:
3.還不知道有何要注意的..............:
:
4.是否可改善sql關聯的速度,不然用VD寫程式就跟用其他開發工具一樣不會比較省事!
?
:
Ans:
SQL關聯的速度慢是因為移動後會把關聯的SQL重新ReAvtive所以速度慢,你應該
:
使用CacheUpdate方式把明細檔和客戶檔JOIN成一個Table就不會慢了!
(Peter)
:
:
VD2.0可以連接SQL7.0嗎?
?
有哪些要注意的?
?
:
Ans:
可以!
只是處理計算,複製,最好不要用dBase語法(如copyto...)需用SQL語法;
:
日期型態,如果不須時間,用C8比較好(定位格式關係).
:
:
請問在MS-SQL7下,將TABLECOPYTOTEMP,如何對該TEMPTABLE設INDEX?
:
Ans1:
C/S架構,應使用SQL語法較適當,如sql.execute('CREATEINDEX?
?
onTable(?
?
)')
:
Ans2:
引用時Orderby即可.
:
:
請問SQL如何做到AUTONO自動編號的功能?
?
/
Ans:
需存檔前寫程式取得,例如x=sql0.send('selectmax(?
?
?
)fromtable'),看你的編碼公式.
:
:
利用SQLENTERPRISEMANAGER來建Primarykey的時候,如何自訂其名稱?
:
Ans:
PRIMARYKEY的名稱是不能改或自定的!
用SQL語法可以:
:
CREATETABLEinfo_taxa
:
(:
compnoCHAR
(2)NOTNULL,/*[公司編號]*/:
yyyymmCHAR(6)NOTNULL,/*[年度]*/:
headCHAR
(2)NOTNULL,/*[字軌]*/:
from1intNULL,/*[1正式號碼起始]*/:
to1intNULL,/*[1正式號碼終止]*/:
from2intNULL,/*[2ipo號碼起始]*/:
to2intNULL,/*[2ipo號碼終止]*/:
from3intNULL,/*[3備用號碼起始]*/:
to3intNULL,/*[3備用號碼終止]*/:
from4intNULL,/*[4IPO備用起始]*/:
to4intNULL,/*[4IPO備用終止]*/:
CONSTRAINTpk_taxaPRIMARYKEY(compno,yyyymm))
:
:
如何將搜尋條件寫入TVDSQL物件的Filter中:
:
:
當我用Navigator的搜尋時,若此Navigator的DataSet為一個TVDTABLE時,
:
:
它會將所搜尋的條件寫入TVDTABLE物件中的Filter,例如若搜尋欄位TRN_NO中
:
:
含有01的值,此時的TVDTABEL中的Filter會有'01'$TRN_NO的字出現,則我可運用