程序配置ODBC和文件复制问题!500分酬谢!!!需要给出程序的。(很急)

chinalht 2002-05-04 09:27:37
希望有朋友能够牺牲休息时间,帮忙写一下。
1。ODBC配置问题(这个最急,请先解决这个问题)
请提供一个较通用的例子程序。

2。复制文件程序。(这个也很急)
需要如下功能:
可以指定要复制的文件(一个或多个)
最好复制时可以出现进度提示,并可以取消
最好可以提供一种方法使程序只能复制到同一个硬盘(或指定卷标什么的指定硬盘)

3。还有一个是pb备份和恢复anywhere的例子
最好提供这样一个功能: 备分后,修改备分文件头,除非恢复程序把文件头修改回来,否则就不能使用。

由于我最多只能给200分,所以解决问题后我会分多次给分的。如果认为分数少,可以在加,最多2351分。希望朋友们帮忙。
程序要求。最好注释多些,包括使用说明。使用pb编写,但可以使用dll。
请将程序和说明文件发到如下地址: soft138@163.net或 lhtsoft@sohu.com
先谢谢了!
...全文
116 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
sandorn 2002-06-29
  • 打赏
  • 举报
回复
gz
chinalht 2002-05-12
  • 打赏
  • 举报
回复
谢谢楼上各位兄弟,结帖了!
sdav 2002-05-10
  • 打赏
  • 举报
回复
收藏了,mx_ch,pin yin huai le zhi hao yong pingyin le ,sy!
jie shi qing chu dian zen me yang ?
sorrow_arrow 2002-05-09
  • 打赏
  • 举报
回复
收藏了
msf 2002-05-08
  • 打赏
  • 举报
回复
ok.verygood
diandianqiuqiu 2002-05-05
  • 打赏
  • 举报
回复
请问数据库恢复直接在PB里写run("isql read c:\temp\reload.sql -c "UID=DBA;PWD=SQL" -q")就能用了么?
swjtu95 2002-05-05
  • 打赏
  • 举报
回复
收藏:)

mx_ch 2002-05-05
  • 打赏
  • 举报
回复
这个函数里面是要注释掉的
mx_ch 2002-05-05
  • 打赏
  • 举报
回复
这个函数需要在应用中先要声明呀//Function Uint GetDriveTypeA (String drive) Library "kernel32.dll"
mx_ch 2002-05-05
  • 打赏
  • 举报
回复
这是配置ASA6.0的一个函数
$PBExportHeader$set_odbc.srf
global type set_odbc from function_object
end type

forward prototypes
global function integer set_odbc (string s_dsn, string db_name)
end prototypes

global function integer set_odbc (string s_dsn, string db_name);//Function Uint GetDriveTypeA (String drive) Library "kernel32.dll"
Int answer,answer1,answer2,answer3,answer4,answer5,answer6,answer7
int answer8,answer9,answer10,answer11,answer12,answer13,answer14,answer15
String ls_driver,ls_start,ls_location,ls_value,db_path,cur_dir

answer=RegistryGet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\dbeng6.exe","Path",RegString!,ls_location)
cur_dir=Space(256)
GetCurrentDirectoryA(256,cur_dir) //取当前目录
if answer=-1 then
ls_location=cur_dir
ls_driver=ls_location+'\dbodbc6.dll'
ls_start=ls_location+'\dbeng6.exe'
if not (FileExists(ls_driver) AND FileExists(ls_start)) THEN
Messagebox('错误',ls_location+'目录中没有安装dbeng6.exe和dbodbc6.dll文件!',StopSign!)
return -1
else
RegistrySet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\dbeng6.exe","path",RegString!,ls_location)
RegistrySet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\dbeng6.exe","",RegString!,ls_start)
end if
else
ls_driver=ls_location+'\dbodbc6.dll'
ls_start=ls_location+'\dbeng6.exe'
if not (FileExists(ls_driver) AND FileExists(ls_start)) THEN
Messagebox('错误',ls_location+'目录中没有安装dbeng6.exe和dbodbc6.dll文件!',StopSign!)
return -1
end if
end if
//设置ODBC\ODBCINST.INI\ODBC DRIVERS
answer=RegistryGet('HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC DRIVERS','Adaptive Server Anywhere 6.0',RegString!,ls_value)
if answer=-1 THEN
answer1=RegistrySet('HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC DRIVERS','Adaptive Server Anywhere 6.0',RegString!,'Installed')
answer2=RegistrySet('HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0','Driver',RegString!,ls_driver)
answer3=RegistrySet('HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0','Setup',RegString!,ls_driver)
IF answer1=-1 OR answer2=-1 OR answer3=-1 THEN
Messagebox('错误','应用程序无法设置ODBC DRIVERS,运行不能继续!',StopSign!)
RETURN -1
END IF
end if

//设置ODBC DATA SOURCE名称
answer=RegistryGet('HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources',s_dsn,RegString!,ls_value)
if answer=-1 THEN
db_path=cur_dir+'\'+db_name+".db"
answer=RegistrySet('HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources',s_dsn,RegString!,'Adaptive Server Anywhere 6.0')
answer1=RegistrySet('HKEY_current_user\software\odbc\odbc.ini\'+s_dsn,'driver',RegString!,ls_driver)
answer2=RegistrySet('HKEY_current_user\software\odbc\odbc.ini\'+s_dsn,'start',RegString!,ls_start+' -d -Q -c1024')
answer3=RegistrySet('HKEY_current_user\software\odbc\odbc.ini\'+s_dsn,'autostop',RegString!,'yes')
answer4=RegistrySet('HKEY_current_user\software\odbc\odbc.ini\'+s_dsn,'DataBaseFile',RegString!,db_path)
answer5=RegistrySet('HKEY_current_user\software\odbc\odbc.ini\'+s_dsn,'DataBaseName',RegString!,db_name)
answer6=RegistrySet('HKEY_current_user\software\odbc\odbc.ini\'+s_dsn,'uid',RegString!,"dba")
answer7=RegistrySet('HKEY_current_user\software\odbc\odbc.ini\'+s_dsn,'pwd',RegString!,"sql")
answer8=RegistrySet("HKEY_USERS\.DEFAULT\Software\ODBC\ODBC.INI\"+s_dsn,"Driver", RegString!,ls_driver)
answer9=RegistrySet("HKEY_USERS\.DEFAULT\Software\ODBC\ODBC.INI\"+s_dsn,"uid", RegString!,"dba")
answer10=RegistrySet("HKEY_USERS\.DEFAULT\Software\ODBC\ODBC.INI\"+s_dsn,"pwd", RegString!,"sql")
answer11=RegistrySet("HKEY_USERS\.DEFAULT\Software\ODBC\ODBC.INI\"+s_dsn,"Start", RegString!,ls_start+' -d -Q -c1024')
answer12=RegistrySet("HKEY_USERS\.DEFAULT\Software\ODBC\ODBC.INI\"+s_dsn,"DatabaseFile", RegString!,db_path)
answer13=RegistrySet("HKEY_USERS\.DEFAULT\Software\ODBC\ODBC.INI\"+s_dsn,"DatabaseName", RegString!,db_name)
answer14=RegistrySet("HKEY_USERS\.DEFAULT\Software\ODBC\ODBC.INI\"+s_dsn,"AutoStop", RegString!, "yes")
answer15=RegistrySet("HKEY_USERS\.DEFAULT\Software\ODBC\ODBC.INI\ODBC Data Sources",s_dsn, RegString!, "Adaptive Server Anywhere 6.0")
if answer=-1 or answer1=-1 or answer2=-1 or answer3=-1 or answer4=-1 or answer5=-1 or answer6=-1 or answer7=-1&
or answer8=-1 or answer9=-1 or answer10=-1 or answer11=-1 or answer12=-1 or answer13=-1 or answer14=-1 or answer15=-1 THEN
Messagebox('错误','应用程序无法设置ODBC DATA SOURCE,运行不能继续!',StopSign!)
RETURN -1
end if

end if
return 0
end function
圣殿骑士18 2002-05-05
  • 打赏
  • 举报
回复
不错不错
xiaoxianhe 2002-05-05
  • 打赏
  • 举报
回复
有价值的帖子!收藏1
powerbu 2002-05-05
  • 打赏
  • 举报
回复
to:楼上
将...\SQL Anywhere 5.0\win32下的isql.exe文件一同打包发行就可以了啊
一同打包的还有:
dbeng50.exe
WOD50T.DLL
WTR50T.DLL
等文件,这样客户就可以不用另外安装SQL Anywhere 5.0了
powerbu 2002-05-05
  • 打赏
  • 举报
回复
to:楼上
将...\SQL Anywhere 5.0\win32下的isql.exe文件一同打包发行就可以了啊
一同打包的还有:
dbeng50.exe
WOD50T.DLL
WTR50T.DLL
等文件,这样客户就可以不用另外安装SQL Anywhere 5.0了
sorrow_arrow 2002-05-05
  • 打赏
  • 举报
回复
对于没有装ISQL的程序怎么恢复呀?
powerbu 2002-05-04
  • 打赏
  • 举报
回复
3、
数据库备份:
dbunload -c "UID=DBA;PWD=SQL" -r c:\temp\reload.sql -y c:\temp

建立一个空的数据库:
dbinit yourpath\dbname.db

数据库恢复:
isql read c:\temp\reload.sql -c "UID=DBA;PWD=SQL" -q
powerbu 2002-05-04
  • 打赏
  • 举报
回复
2、(转贴)
用xcopy.exe
先建一个批处理copyfile.bat

程序如下:
long li_1
li_1 = FileOpen("copyfile.bat", StreamMode!, Write!, Shared!, Replace!)

FileWrite(li_1, “xcopy \\”+trim(server_name)+“\d$\orant\database ”+trim(ls_path_database)+“ /e”)
fileclose(li_1)
run("copyfile.bat",minimized!)
for li_loop= 1 to 10000
ll_handle = FindWindowA("tty","copyfile")
yield()
if ll_handle <> 0 then
exit
end if
next
//一直循环到窗口关闭
Do While isWindow(ll_handle)
Yield()
Loop
//server_name、ls_path_database均为变量
powerbu 2002-05-04
  • 打赏
  • 举报
回复
1、

//as_path为数据库文件所在的路径(一般安装路径中,用
FUNCTION ulong GetCurrentDirectoryA(ulong BufferLen, ref string currentdir) LIBRARY "kernel32.dll" 可以得到)
//as_odbc_name 为数据源名称

$PBExportHeader$of_odbc_sqlanywhere5.srf
$PBExportComments$sql anywhere5.0 数据库系统的ODBC注册函数
global type of_odbc_sqlanywhere5 from function_object
end type

forward prototypes
global subroutine of_odbc_sqlanywhere5 (string as_path, string as_odbc_name)
end prototypes

global subroutine of_odbc_sqlanywhere5 (string as_path, string as_odbc_name);string ls_regedit,ls_regedit1

ls_regedit = 'HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\'+as_odbc_name
ls_regedit1 = 'HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources'
Registryset(ls_regedit,'Description',"自动配置ODBC数据源")
Registryset(ls_regedit,'Driver',as_path+"\WOD50T.DLL")
Registryset(ls_regedit,'UID',"DBA")
Registryset(ls_regedit,'PWD',"SQL")
Registryset(ls_regedit,'Start',as_path+'\dbeng50.exe -c 8m -Q')
Registryset(ls_regedit,'DatabaseFile',as_path+'\'+as_odbc_name+'.DB')
Registryset(ls_regedit,'DatabaseName',as_odbc_name)
Registryset(ls_regedit,'AutoStop',"Yes")
Registryset(ls_regedit1,as_odbc_name,"Sybase SQL Anywhere 5.0")


end subroutine



2、

1,076

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧