PB实用技巧
如何在PB5中自動生成行號?
delelte數據窗口中若干行,然后update,出現: “rows changed between retrieve and update No changes made to database… Delete from table where ….” 請教是何緣故,該數據窗口是updatable 的,未設置關鍵字。?
如何能夠作到,在打印一個DataWindows后不自動換頁,而繼續打印下一個DataWindows??
我在table中改了一個字段的類型,回來一看,相應的datawindow字段在運行時再?
也無法輸入東西了?.?
我沒安裝watercom C++,連用模板生成的PBL都不能正確編成EXE運行,生成的EXE在?
windows95 中遠行時報程序啟動錯誤,怎么辦??
我剛安裝好nt40中文版 及sybase system 11.0.1無任何錯誤提示,啟動SSM時給提示:無法找到DNETW.DLL于指定路徑 C:\SYBASE\BIN C:\WINNT\SYSTEM32…..但還能啟動SSM。 打開SERVER時提示:NO LANGUAGE HANDLER INSTALL這與NT有關嗎?如何解決?
如何在PB5中自動生成行號?
自動生成行號的方法很多,你可以看看PB的例子就知道了。目前我用的方法是,先用SQL語句統計表中最大的行號,把結果保存到一個變量中去,然后再對此變量進行加1不就可以了嗎?但這種做法只是從最大的行號開始產生行號,產生最小的行號也是類似的。
delelte數據窗口中若干行,然后update,出現: “rows changed between retrieve and update No changes made to database… Delete from table where ….” 請問為什么??
試試更改數據窗口的Update Properties中的 ‘Where Clause for Update/Delete’中的選項。
如何能夠作到在打印一個DataWindows后不自動換頁,而繼續打印下一個DataWindows??
在PrintPage事件中返回0
在table中改了一個字段的類型,回來一看,相應的datawindow字段在運行時再也無法輸入東西了,為什么??
datawindow具有自己的SQL語法,該語法和數據庫后臺中的變化不能時時響應,因此,當后臺的數據庫發生修改后,應該手工修改datawindow中的列定義,如:將變化的列刪除,再次添加就可以了。
沒安裝watercom C++,連用模板生成的PBL都不能正確編成EXE運行,生成的EXE在windows95 中遠行時報程序啟動錯誤,怎么辦??
不用安裝Watcom C++,編譯器內置于pb6文件中,估計你和我以前的錯誤一樣,在win98中編譯后在win95中運行報啟動錯,解決方法:
1.在本站點下載pb6.5 patch,它可使你的pb6升級到pb6.5,可解決win98下很多問題.?
2.在win95下編譯.?
原因是PB在執行時找不到運行庫必須將\powersoft\shared加入路徑或將它的內容拷入運行目錄
安裝好nt40中文版 及sybase system 11.0.1無任何錯誤提示,啟動SSM時給提示,這與NT有關嗎?如何解決??
first:you must restart your system?
second:perhaps you need running SQLEDIT.
縮小含較少數據的Sybase數據庫的規模,如2G的數據庫,其中含200M的數據,如何將其轉換為500M左右的數據庫??
高級方法:不用BCP,使用修改系統表SYSUSAGES的方法。詳細方法在SYSBASE NEWSGROUP 有。你可以在www.sybase.com找到administrator 論壇。
請教兩個sybase sql server 之間復制數據的方法?
SYBASE有一個東東叫Replication Server,專用來復制Sybase SQL Server,不過就是對維護人員要求高(沒有sybase幫你,我看你日子不好過)
如何將Excle文件中的數據倒入PB5.0的Database
回答1:將該xls文件建立ODBC數據源,在PB里打開,存成sql文件,在打開sqlanywhere的庫,運行此sql文件即可。
回答2:采用DDE或OLE編程。將PB置成DDE server 或ole server.在EXCEL中進行VBA編程,可實現對特定數據的處理和傳送。
回答1:檢查你的DATAWINDOW是否與TABLE 相符。最好此DATAWINDOW重新生成。
回答1:第一個問題現已出現不多,可能是書寫程序不規范所致。第二個問題是Sybase Central 在中文環境下的問題,如果你用西文Win95, 外掛的漢字系統,并且將區域設置(regional setting) 設成英語國家,就可以了。回答2:PB出現無效頁面錯,是和某些軟件的沖突,如運行cstar 2.97則Sybase Central退出時出錯,若在純凈的英文win95,win98下PB6.5很穩定,說明PB在中文下測試不夠,本身抗干擾能力差,至少出錯信息少,特別程序本身的底層出錯檢驗差.
回答2:我同意您的觀點。但我的情況是剛剛裝完Win95后立即裝PB,同樣出問題。友人建議我使用PB5.0不要追求高版本。但Sybase中國可能已不出售這個版本的PB了。
回答1:1,在SSM里生成DDL?
2,把所有數據BCP出來(提示,可以先生成一個BAT文件,不用我說了吧?)?
3,在小型機的SQL Server里運行DDL?
4,把所有數據BCP進去(提示,可以先生成一個BAT文件)
回答1:在VC中, int 是32位. 而在PowerBuilder 中int 是16位, long則是32位.
回答1:編譯時不要選編為本機代碼。?
回答2:下載補丁版
回答1:不要使用PB的ODBC驅動,用MS的?
回答2:將SQL SERVER的CHAR類型改成VARCHAR類型
回答1:我沒有出現這種情況啊?不過在PBCGI60正在運行時,即網頁正在刷新時,如果關閉服務器應用會產生這種情況(100%)。我認為這是PB的BUG,可能是PBCGI與應用通迅時是通過共享內存來實現的,而內存是由應用分配而來,當應用關閉時,所分配的內存也就釋放了,這時PBCGI60。EXE還是去這塊內存取數據的話,操作系統就會認為非法操作(因為這塊內存已經歸還給操作系統了,PBCGI60。EXE沒有操作的權限)
回答1:1,在DW的ItemChanged寫Script實現?
2,computedField本來就可以由兩條以上記錄的某字段值計算而得,例如sum,count等。如果你想指定某幾條記錄來作計算,可以用IF,例如要統計第一個記錄和第二個記錄的值:sum(if(getrow()=1 or getrow()=2),字段名,0)?
3,給ComputedField一個名字,然后用getitemXXX(1,名字)?
4,要在ItemChanged里寫Script
回答1:BCP is another way.?
回答2:不能修改,可以另外建一個表,用PIPELINE將數據倒過去。
回答1:在Infobase里按出錯的關鍵字查一下,應該可以找到原因。?
回答2:按PBD編譯吧!
回答1:在win95 osr2版里選裝附件中的‘映像’,即可得到WANG系列的image控件,非常好用,請試一試。
回答1:沒有紀錄號的概念啦!
回答1:這要看你是使用同步還是異步調用,同步你可以傳遞一個REF STRING 參數、然后用 IMPORTSTRING 函數引入數據,如果是異步調用你需要使用 SERVER PUSH 技術返回一個STRING,然后在用IMPORTSTRING。詳細處理看 PB ONLINEBOOKS
回答2:用 datastore.object.datawindow.syntax 得到語法,用 datastore.object.datawindow.data 得到數據
回答1:1.具體與你使用的數據庫有關,在SQL Server及SQL Anywhere中trigger 語法存放在syscomments表中,直接select出來就可憐看到。?
2.調用windows API.具體function我記不清了,查一下visual c++幫助,不難。
回答1:SQL AnyWhere default value=當前用戶 的語法用user char ( 10 ) default user,而不是 default current user,再試試!
回答2:在此表上ADD一個TRIGGER。在INSERT 和UPDATE時出發。TRIGGER啟動后SELECT USER INTO VAR1 NEW。USER := USER;我也是蝦血,你可以試試。
回答1:用 Image 類型 的列試試。
回答1:客戶端配置 ODBC 時注意以下幾點:?
1)Server Name 項寫 ASA 的 Server Name?
2) Database Starup 項內選中 Network radio button.
回答1:第二個 Transaction 的屬性配置和第一個類似,只是在用的時候 SQL 語句后要加 using …; ,并且用完后要用 Destroy 命令刪掉。
回答1:聽說是用windows\system里的REGSVR32命令
回答1:是否缺少.lic文件?
回答1:打開Database Painter, 在 File 菜單項下有Create Database,如果沒有,那么可能你裝PB的時候沒裝 SQL Anywhere.
回答1:移入、移出控件我都是用的 mousemove, 可以在 Script中進行區分。
回答1:sqlca.servername = ‘@’ + ORACLE數據庫別名?
sqlca.dbms=’o72’?
sqlca.login = ‘SYSTEM’?
sqlca.loginpass = ‘MANAGER’
回答1:droptable不對, 應該是drop table,PB對sybase自身的數據庫產品的支持應該是沒有問題的,連接oracle或者db2等一般不能直接修改列名或者列類型,另外, 對于大型數據庫而言, 一般不允許將列長度變小, 如:?
col1 numeric(8,2) –> col numeric(10, 2) ok,?
col1 numeric(8,2) –> col numeric(8, 0) no
- 1
- 2
- 3
回答1:不妨試試如下命令(在交互式環境下)?
online database cinms?
go?
看看是否可以解決問題!!!
回答2:手工更改master庫中的sysdatabases表,它有兩個狀態欄status,status2,可以去掉SUSPECT位,具體數值意義可以看SYBASE的參考資料.
回答1:你的sybload后沒加-D的參數或CAS不對。
回答1: 可考慮自己在程序中計算,最后insertrow(0),并Setiem.
回答1:用 set identity_insert on 改變設定后,insert 語句中 identity 列的值是顯式指定 identity 列將從這個值開始遞增,或用這個值填充 identity 列值中的空隙。如果不影響邏輯的話,能不能drop再create?
回答1:是這樣,當你用到一個對象是動態加入的,如你程序中的類似 dw_userquery.DataObject = “d_pacuser2” 的情況,編譯是PB 不會將 數據窗口 d_pacuser2 自動編譯到 EXE 文件中去,解決辦法有兩個:?
1)將此數據窗口所在的PBL 文件編譯成 DLL 或 PBD,(即 編譯時選中此 PBL文件后面的 DLL 多選框)?
2)創建資源文件(以PBR結尾)?
例如:?
創建文件 dw_list.pbr?
內容如下:?
c:\sample\myapp.pbl(d_pacuser2)?
將此文件寫在 Resource File 處。
回答1:這是PB的問題,如果要求嚴格的話,請不要使用轉換函數.解決的辦法只有用兩個整數來代替一個浮點數的整數及小數部份,在有關處理中,只能人工解決
回答1: 這種現象我也遇到過,可以采用設置EDITMASK來解決 將mask設為###.##而不是000.00
回答1: 1>dw_1.setSqlSelect 或?
2>dw_1.object.datawindow.table.select=…
回答1:如果多次調用,則最好Prepare一次,再在循環中Open,不要每次都Prepare.
回答1:在COMPOSITE REPORT 設計過程中,雙擊COMPOSITE 報表的空白處,設置composite report的檢索參數(value),然后雙擊rep,把剛才設置的參數賦于rep,最后用 dw_composite_report.RETRIEVE(VALUE)
回答1:試試這樣:dw_1.object.rep1.object.st_1.text=value
回答1:通過判斷默認事務對象sqlca的屬性sqlcode來決定.?
if slqca.sqlcode=** then?
messagebox(”,’中文提示’)?
end if?
當然要了解pb的錯誤級別.
回答1:完全可用多重循環來實現。插入可用函數insertitemlast()來完成,注意其語法為:?
treeviewname.InsertItemLast(handleparent, item )?
其中handleparent為要插入Item其父項的句柄(第插入一項都返回一個句柄,long型),item為treeviewitem。?
for example:?
for i = 1 to row1 step 1?
name = dept_datastore.getitemstring(i,”dept_name”)?
code = dept_datastore.getitemnumber(i,”dept_code”)?
xt_tvitem.label = name?
xt_tvitem.data = dept_datastore.getitemnumber(i,”dept_code”)?
xt_tvitem.pictureindex = 2?
xt_tvitem.selectedpictureindex = 2?
ll_newitem = tv_1.insertitemlast(ll_rootitem,xt_tvitem)//返回一個句柄ll_newitem ,作其子項父句柄。ll_rootitem為根句柄?
for j = 1 to row2 step 1?
xt_tvitem.label = emp_datastore.getitemstring(j,”name”)?
xt_tvitem.data = emp_datastore.getitemnumber(j,”em_code”)?
xt_tvitem.pictureindex = 3?
xt_tvitem.selectedpictureindex = 3?
tv_1.insertitemlast(ll_newitem,xt_tvitem)//用到父句柄?
next?
next
回答1:可以這樣寫:?
string ls_Y?
ls_Y = ‘Y’?
newwhere = “where (table1.~~field1~~ = ‘” + ls_Y + “’)”
回答2:pb倒是沒有提供標準的modify接口,可能要用死辦法直接修改syntax的table區,具體格式可以看 SRD
回答1: PFC是一些基本類庫,PFC功能強大,使用PFC開發程序,需要寫的代碼很少,時間可以大大減少,界面也比較好。
回答2: PowerBuilder Fundamental Classes, 是這個意思吧,就是和微軟的MFC差不多的東東。
回答1:好像在RUN_SYBASE文件內加一個 -m 然后,重新啟動,會自動產生一個新的SA口令。一定要用筆記住。再用sp_password改成自己的口令。的自己加的-m去掉,重啟動就可以了。
回答2:為了安全,SYBASE 確認了你的身份后才能幫你解決。有時需要正式介紹信。
回答1:The first function returns the color of a specific pixel(像素;顯示器的最小分辨單元). The SetPixel function changes the targeted pixel to the color sent. There is no PowerBuilder equivalent.?
Global External Function:?
FUNCTION ulong GetPixel(ulong hwnd, long xpos, long ypos) LIBRARY “Gdi32.dll”?
FUNCTION ulong SetPixel(ulong hwnd, long xpos, long ypos, ulong pcol) LIBRARY “Gdi32.dll”
Script:?
long lx, ly?
ulong rtn?
ulong l_handle, l_device?
lx = 100?
ly = 100?
l_handle = handle(w_main)?
l_device = GetDC(l_handle)?
rtn = GetPixel(l_device, 100, 100)?
MessageBox(“Position ” + string(lx) + “,” + string(ly),”Color = ” + string(rtn))?
SetPixel(l_device, lx, ly, 0) // This call will set the pixel at lx, ly to black.
回答1:There five table is used to loaded “Lable”,”validation”,”head” and “tablename” and others table information whose in PB.We can used to show “table name” in our application and delete “died tabled ” in Database’
回答1:使用VB5.0所帶ActiveX control.安裝vb后在pb OLE control中即可見.
回答1:使用如下語句顯示DW dw1.object.datawindow.print.prview = True
回答1:很簡單,你在Sql Enterprise Manager中對你的數據庫右擊,再點edit,再點Truncate,就可以將數據庫中已完成的事務清掉.或者用DUMP TRANSACTION … WITH TRUNCATE就可以了
回答2: 您的DATAWINDOW是不是有很多個TABLE的復雜關連?它將導致臨時表空間不夠,若是,那你就要改變DATAWINDOW的做法了,例如,你可以在VIEW或者STORE PROCEDURE中將多個TABLE關聯起來,然和建立一個用VIEW或者STORE PROCEDURE作為數據源的DATAWINDOW.
方法一
1、聲明外部函數?
FUNCTION boolean sndPlaySoundA (string SoundName, uint Flags) LIBRARY “WINMM.DLL”?
Function Uint LoadLibraryA(String As_Library) Library “kernel32.dll”?
Subroutine FreeLibrary (Uint Hinstance) Library “kernel32.dll”?
2、程序如下:?
Uint Lu_instance?
Lu_instance = LoadLibraryA(“winmm.dll”)?
if Lu_instance = 0 then?
SndPlaySoundA(“c:\windows\media\chimes.wav”,1)?
FreeLibrary(Lu_instance)?
end if?
3、存在問題:?
如何播放格式的音樂?
方法二:
1、聲明外部函數?
Function Uint ShellExecuteA (Uint hwndId,ref string op,ref string file,ref string parms,ref string dir,Uint show) library “shell32.dll”?
Function Uint LoadLibraryA (String As_Library) Library “kernel32.dll”?
Subroutine FreeLibrary (Uint Hinstance) Library “kernel32.dll”?
2、程序如下:?
String Ls_path,ls_file,ls_parms,ls_dir,ls_command?
Uint lu_return,lu_instance?
SetNull(ls_parms)?
//check to see if the dll is available.Return number < 32 if not Lu_Instance = LoadLibraryA(“shell32.dll”)?
if Lu_Instance <> 0 then?
MessageBox(“操作提示”,”SHELL32.DLL動態庫不存在!”)?
else?
//Shell32.dll is here.Get a filename from the user?
GetFileOpenName(“打開文件”,ls_path,ls_file,”“,”All Files (.),.*”)?
if ls_path <> “” then?
SetPointer(HourGlass!)?
//Examine the checkbox for open or print configuration?
if cbx_print.checked then?
ls_command = “print”?
else?
ls_command = “open”?
end if?
//call the function.pass the parent as the ower.run normal.?
Lu_return = ShellExecuteA(Handle(parent),ls_command,ls_path,ls_parms,ls_path,1)?
//check for errors from function?
if lu_return < 32 then?
MessageBox(“操作提示”,”程序執行非法操作! ~r~n” + ls_path)?
end if?
end if?
//free the resources from the dll since it was loaded with the loadlibrary call?
FreeLibrary(lu_instance)?
end if?
注:本方法可運行任何文件,當然可以播放音樂文件 和動畫文件。在sndPlaySoundA() 的函數定義中,把 string SoundName 定義成 ref string SoundName,再試試,反正這個函數的原型就是有 ref 的。
回答1: 加 filter ;根據索引加 where 條件;或者干脆用 rowsmove 把其他記錄移到 filter buffer 中。
回答1:請您使用黑體或楷體,否則在無盤工作站和WIN98中都會出現字體顯示不出來的情況.
回答1:用grid風格的datawindow想加標題行比較麻煩,因為grid風格中的標題band中也會顯示網格線,而且要將text控件的band屬性設為Foreground.你可以用Create語句創建一個text控件,然后指定它的位置和band屬性.create的語法如下:?
dw_1.Modify(‘create text(band=foreground alignment=”2” name=datetext text=”text” border=”0” color=”0” x=”0” y=”0” height=”69” width=”650” font.face=”Arial” font.height=”-9” font.weight=”400” font.family=”2” font.pitch=”2” font.charset=”0” background.mode=”1” background.color=”16777215” )’)?
其中text的屬性大部分為必需的,如果不完整的話,該text可能不能顯示.據我所知,用grid風格的datawindow時要想加上標題,而且要顯示得比較好看,只能用text控件將顯示出的多余的網格線給蓋住,這樣做語法上比較麻煩,因為你要得到這個datawindow中最后一個列的y值和width,以控制text的width,特別是你這個datawindow和text是動態創建的.當然這些都是可以實現的,多多鉆研吧!
回答1:該錯誤大多是由于Transaction沒有正確的Connect,你Connect后,應檢查sqlcode的值Put transaxtion parameters in scripts .or copy pb.ini to the directory of the *.exe file.
回答2:應用在pb開發環境中運行時,系統會自動去找需要的庫,但編譯成.exe文件后運行就需要手工設置路徑或copy這些庫到當前目錄。一般這些庫都能在pb的shared目錄下找到。具體可參看“可執行文件調用動態鏈接庫問題”一帖的答復。已有幾位高手詳細解釋。
A3:可能全局變量與局部變量,事例變量沖突
回答1: I had a solution, like follows,?
void WINAPI PrintSet(LPCTSTR PrinterName, DWORD PaperSize, DWORD Height, DWORD Width, LPDWORD ret_code, LPTSTR errortext)?
{?
DEVMODE* lv_devmode;?
DEVMODE* lv_devmode_2;?
PRINTER_INFO_2* lv_printer_info;?
LPTSTR lv_str, pDeviceName;?
HANDLE phPrinter;?
DWORD pcbNeeded, lv_dword;?
lv_printer_info = malloc( 500 );?
if (!OpenPrinter(PrinterName, &phPrinter, NULL))?
{?
free(lv_printer_info);?
*ret_code = GetLastError();?
lv_str = “打開打印機失敗 !”;?
strcpy(errortext, lv_str);?
return;?
}?
if (!GetPrinter(phPrinter, 2, lv_printer_info, 500, &pcbNeeded ))?
{?
free(lv_printer_info);?
*ret_code = GetLastError();?
ClosePrinter(phPrinter);?
lv_str = “無法得到打印機參數 !”;?
strcpy(errortext, lv_str);?
return;?
}?
lv_devmode = lv_printer_info->pDevMode;?
pDeviceName = lv_devmode->dmDeviceName;?
lv_dword = DocumentProperties(0, phPrinter, pDeviceName, lv_devmode, 0, DM_OUT_BUFFER);?
if (lv_dword<0)?
{?
free(lv_printer_info);?
*ret_code = GetLastError();?
ClosePrinter(phPrinter);?
lv_str = “無法取得打印機參數 !”;?
strcpy(errortext, lv_str);?
return;?
}?
// 修改DEVMODE結構, 設置紙張大小及其高度和寬度?
lv_devmode->dmFields = lv_devmode->dmFields|DM_ORIENTATION|DM_PAPERLENGTH|DM_PAPERWIDTH|DM_PAPERSIZE;?
lv_devmode->dmOrientation = DMORIENT_PORTRAIT ;?
lv_devmode->dmPaperSize = PaperSize ;?
lv_devmode->dmPaperLength = Height;?
lv_devmode->dmPaperWidth = Width;?
// 通過調用DOCUMENTPROPERTIES函數傳會修改的DEVMODE結構,?
// 在調用時指定DM_IN_BUFFER|DM_OUT_BUFFER?
lv_devmode_2 = malloc(500);?
lv_dword = DocumentProperties(0, phPrinter, pDeviceName, lv_devmode_2, lv_devmode, DM_IN_BUFFER|DM_OUT_BUFFER);?
if (lv_dword<0)?
{?
free(lv_devmode_2);?
free(lv_printer_info);?
*ret_code = GetLastError();?
ClosePrinter(phPrinter);?
lv_str = “無法設置打印機參數 !”;?
strcpy(errortext, lv_str);?
return;?
}?
if (!SetPrinter(phPrinter, 2, lv_printer_info, NULL))?
{?
free(lv_printer_info);?
*ret_code = GetLastError();?
ClosePrinter(phPrinter);?
lv_str = “無法設置打印機參數 !”;?
strcpy(errortext, lv_str);?
return;?
}?
free(lv_devmode_2);?
free(lv_printer_info);?
ClosePrinter(phPrinter);?
lv_str = “設置打印機參數成功 !”;?
strcpy(errortext, lv_str);?
*ret_code = 1;?
return ;?
}
回答1:原因是你創建控件的語法不完整,一些必須的屬性沒有說明,如X,Y,band.你可以先將控件的語法先輸出到文本里,再替換為你的控件的屬性.以下為一個text控件的最基本的語法.?
create text(band=detail alignment=”0” text=”aaaa:” x=”691” y=”52” height=”77” width=”426” name=aaaa font.face=”Arial” font.height=”-12” font.family=”2” font.charset=”0” background.mode=”1” )
回答2: 我又看了看幫助,找到了答案:現在公布:?
window.openUserObject ()?
參數請查看幫助
回答1:請將豎線畫長點!
回答2:在報表的屬性中設置Units項為1/1000cm或Pixels,這樣報表的上下線就可以連續了。
回答1:string ls_value?
ls_value=dw_1.describe(“Evaluate(‘lookupdisplay(column_name)’,1)”)?
column_name=列名 ,’1’表示第一行;看看Help中的Describe
回答1:用dec()函數轉換
回答1: 把圖形 datawin object的 border 設為可調大小,即resize。然后把datawindow控件選上水平,垂直 滾動條屬性即可。
回答1: 用close cursor 可以關閉游標,用deallocate cursor 可以釋放分配給游標的資源
回答1:看看share memory could not directly allocated在SCO UNIX OPEN SERVER 3.0 下安裝SYBASE10.0.2,當運行SYBINIT到最后要:?
1, 增加操作系統的Max Shared Memory?
2,修改SQL Server的配置?
a. Set Total Memeory . ex:32M?
b. Create Cache for Database or append the default data cache?
c. 其它需要根據你的具體情況配置?
3, 增大tempdb的容量?
4, 建立合適的index 根據你的應用建立index,避免大的表掃描。
回答?
1,Unix 的IDE H.D.一般應該為Normal.?
2, SYBASE在UNIX下要配置幾個參數。前面有過回答。SYBINIT運行到最后,BUILD THE MASTER 成功,當它試圖Boot the sql server 時出錯,boot fail.這是安裝的最后一步卻失敗了,配置中止,安裝失敗,而不是使用過程中的問題。設好環境變量后,試試以下幾步:?
1, cd /etc/conf/cf.d 用configure 設 16.shared data 為32000000?
2, cd /usr/libvi aiomemlock加sybase=32000000?
3, cd /etc/conf/sdevice.d 改suds 的第二項’N’為’Y’?
4, cd /etc/conf/cf.d link_unix
回答1: 您完全可以不要INI文件,只不過用INI文件方便一些,當與數據庫連接的信息或配置信息變化時不用修改程序而已。一般在WIN95中用注冊表代替。
回答1:在DW的dberror事件中,用MessageBox寫上自己的Error Message,最后,關鍵的一點, return 1(或>0的數)。
回答1:PowerBuilder does not support Socket programming. You can use VB or Power++ to create an ActiveX which encapsulates all socket methods. Then integrates this ActiveX into PowerBuilder.?
Note: If you call the receive method. The method will block until all data are received
回答1:使用ODBC連接當文件名不確定時,可以動態修改注冊表中的ODBC信息及OBDC.INI文件中的信息,再用 transaction連接。
回答1:在DataWindow Retrieve之前應該用Settransobject函數,即:?
Connect using sqlca;?
dw_1.settransobject(sqlca)?
dw_1.retrieve()
回答1:PB原本是不支持WINSOCK編程的,但POWERSOFT提供了pslib5.dll和winsock.pbl兩個工具.前者是winsock 2.0的DLL,后者是PB的用戶對象集,提供了winsock的所有函數.
回答1:(only for win95)?
一、shared ALL PBVM60.DLL; Datawindow and report PBDWE60.DLL;Richtext PBRTC60.DLL;OLE win95 PBAEN60.TLB?
二、DB interface MS SQL server 6.0 PBMSS60.DLL;PB ODBC PBODB60.DLL;PBODB60.INI;Oracle 7.1 PBO7106.DLL;Oracle 7.2 PBO7206.DLL;Oracle 7.3 PBO7306.DLL;Sybase SQl Server 11.x PBSYC60.DLL?
三、數據庫驅動DLL這個太多了,查查相應的HLP文檔。?
shared DLL、DB interface、DB driver 三者缺一不可,把所有的這些文件放入\window目錄下是可以的,因為該目錄是window的缺省目錄,
Q回答1:但是不能把所有的應用程序的DLL都放這里吧??
有兩種Solution:?
1>>把工作路徑加入Windows注冊表中應用程序的PATH中,(V_V);?
2>>把工作路徑加入Autoexec.bat中(^_^)。?
這樣,這些DLL放在那里都可以了!
回答1: 1》這些庫都包括了嗎?(PB在windows注冊表中包含了DLL的路徑,所以他的DLL可以不必放在PB60.EXE下,yours?)?
2》SQLCA直接寫吧,不要從PB.ini中讀。?
3》一定要找到SQLANY50和oracle 7.3的DB driver,并放置到合適的路徑下。SQLANY50 WOD50T.DLL,WL50ENT.DLL,WTR50T.DLL,WODBC.HLP?
4》你的DLL包含了MS的DB driver了嗎?DS16GT.DLL,DS32GT.DLL, MSCVRT40.DLL,ODBC32.DLL,ODBC16GT.DLL, ODBC32GT.DLL, ODBCCP32.CPL, ODBCCR32.DLL,ODBCINT.DLL,ODBCINST.CNT,ODBCTRAC.DLL,ODBCAD32.EXE?
5》試試控制面板中的ODBC32,是不是有什么問題。?
6》如還有問題,請再說詳細些。
回答1: 其實,如果編譯沒有錯誤,只要在pb目錄中shared子目錄下,把Pbvm60.dll拷貝到win95的目錄下,然后在把pbdwe60.dll、pbodb60.dll、pbrtc60.dll、pbtra60.dll、pbodb050.dll、pbmss60.dll這幾個動態連接庫,拷貝到你編譯后的工作目錄下,就可以了。
回答1:先在Local extenal function定義下列API Function?
function boolean ImmSimulateHotKey (UnsignedLong hWnd,UnsignedLong dwHotKeyID) library “IMM32.dll”?
function unsignedlong GetKeyboardLayout (unsignedlong wLayout)library “user32.dll”?
function boolean ImmIsIME(unsignedLong hklKeyboardLayout)library “IMM32.DLL”?
如果是使用datawindow, 在itemchangedfocus event中:?
ulong hklKeyboardLayout?
Choose Case dwo.name?
Case “chinese_text”?
// 需要中文輸入的字段?
hklKeyboardLayout=GetKeyboardLayout(0)?
if not ImmIsIME(hklKeyboardLayout) then?
ImmSimulateHotKey(handle ( parent,112)?
end if?
Case “Englist_text”?
// 英文輸入字段?
hklKeyboardLayout=GetKeyboardLayout(0)?
if ImmIsIME(hklKeyboardLayout) then?
ImmSimulateHotKey(handle ( parent ),112)?
end if?
End Choose?
在windows 編輯框中類似。
回答1: 1》可以用方法POS(str1,str2)>0 and …;?
2》把like子句()。即:(col1 like ‘%ggg%’) and (col2 like ‘___WW’)。
回答1:首先在PACKAGE聲明方法(Function,受JAVA的“METHOD”的影響不習慣叫“函數”, HEHE..)這個聲明把該方法聲明成公共 (Public)方法。然后在PACKAGE BODY中定義該方法。(如果僅在PACKAGE BODY中定義該方法,則被認為是私有(Private)方法,將不能被包外的應用訪問,OOP的典型應用)例如:定義包,并聲明一個 procedure pro_1:?
Package p_zhhz is procedure pro_1(v1 in number);?
end p_zhhz;?
定義包體,在包體中定義這個 procedure pro_1:?
Package BODY p_zhhz is procedure pro_1(v1 in number) is begin?
delete from a_zhhz_test where zhhz_number = v1;?
end pro_1;?
end p_zhhz;?
在PB中調用:?
int li_v1?
//聲明procedure,并且置初值?
li_v1=5?
DECLARE sel_zp_zhhz_1998_9_2 procedure for p_zhhz.pro_1(:li_v1) ;?
EXECUTE sel_zp_zhhz_1998_9_2;?
CLOSE sel_zp_zhhz_1998_9_2;?
// (zhhz 1998-9-2)?
// zhhz_zhhz@hotmail.com?
回答2: 感謝你的幫助.由于我的存儲過程是個函數,所以沒采用EXECUTE;在TRANSACTION對象中聲明時采用”RFCFUNC”定義為一個函數,加上包名.問題已得到解決.
回答1:commit是嵌入SQL語句,update()函數把對數據庫的修改寫到日志,commit遞交到數據庫,因此不存在無法commit的問題。可能您沒有把TabPage上的update()函數要寫成Tab_?.TabPage_?.dw_?.update()
回答2:能夠!可能是你的data window的屬性(update)沒有設置!
回答1:我用PB的EDITMASK 時,可以直接修改無須用DEL先刪除。不知你的屬性如何設置
總結
- 上一篇: nodeJs的学习之路(1)
- 下一篇: 171. Excel Sheet Col