小 小天 Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-06 #1 我需要用BDE设置两个指向,一个指向NT网络映射盘的SQL数据库,别一个指向本地盘的paradox数据库,分别保存在映射盘和本地盘上的IDAPI.CFG文件中。 我想请问,在程序中我如何才能动态切换这两个CFG文件呢?
我需要用BDE设置两个指向,一个指向NT网络映射盘的SQL数据库,别一个指向本地盘的paradox数据库,分别保存在映射盘和本地盘上的IDAPI.CFG文件中。 我想请问,在程序中我如何才能动态切换这两个CFG文件呢?
W wuyi Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-06 #2 你用同一个cfg文件, 用两个alias不是可以吗? 难道有什么冲突?
小 小天 Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-06 #3 不行,我们做系统,要在本地装同一个alias,又要在网络上装同一个alias
C colinyan Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-06 #4 你不需要去修改cfg文件,只是需要两个AliasName 在访问Paradox数据库时,只需要将 Session.NetFileDir:=数据所在目录 如果有非法退出情况需要将数据目录的*.lck文件删除 你才能连上数据库。 如果你使用本地Paradox数据库是作为临时库的化,建议 你改用MemeryTable。
你不需要去修改cfg文件,只是需要两个AliasName 在访问Paradox数据库时,只需要将 Session.NetFileDir:=数据所在目录 如果有非法退出情况需要将数据目录的*.lck文件删除 你才能连上数据库。 如果你使用本地Paradox数据库是作为临时库的化,建议 你改用MemeryTable。
C CJ Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-06 #5 ??? 好奇怪的思路,理论上说通过BDE API是可以的//参阅有关手册 流氓方法嘛:LOG--RENAME)) 不过为什么不写两个ALIAS呢?localXXX,RemoteXXX 在程序里 if need local then database1.alias := localxxx;//is this property right? else ...
??? 好奇怪的思路,理论上说通过BDE API是可以的//参阅有关手册 流氓方法嘛:LOG--RENAME)) 不过为什么不写两个ALIAS呢?localXXX,RemoteXXX 在程序里 if need local then database1.alias := localxxx;//is this property right? else ...
小 小天 Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-08 #6 是这个样子的啦,我们有一个系统安装后BDE自动调用网络盘上的CFG文件。现在老板又要求做单机、本地两用版。也就是说,单机用时,BDE指向c:/AA,网络用时指向f:/AA(网络盘),由于我们原系统的文件是调用F盘上的,我们总不能在F盘上的那个CFG文件中设多个C:/AA吧。所以我想使用在使用过程动态切换CFG文件。
是这个样子的啦,我们有一个系统安装后BDE自动调用网络盘上的CFG文件。现在老板又要求做单机、本地两用版。也就是说,单机用时,BDE指向c:/AA,网络用时指向f:/AA(网络盘),由于我们原系统的文件是调用F盘上的,我们总不能在F盘上的那个CFG文件中设多个C:/AA吧。所以我想使用在使用过程动态切换CFG文件。
W wuyi Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-08 #7 你们的程序既然能够自动调用网络盘上的CFG文件, 为什么就不会改一下去自动 调用本地的CFG文件呢? 太奇怪了!
C CJ Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-08 #8 wuyi:应该是用另一个程序设置,就像BDE ADMIN32那样 小天:我玩不转,如果对查HELP不感冒,可以参考BDE API HELP//DELPHI有 要么,RENAME
C colinyan Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-09 #9 这样做吧 方法一、建立两个别名,程序里使用Database控件提供的虚拟别名。在 程序进入时确认是使用网络还是单机,判断Database.AliasName是什么。 这样的话程序改动最小。(Session.NetFileDir=XXX当然少不了) 方法二、使用编译指令,干脆编译两套程序,两个图标,由用户自己选择。 另外有一点需要补充: 如果你的Paradox数据库放在NT上,千万千万要注意用户机(Win95/98)网卡不能 绑定除了IPX以外的网络协议,否则数据库正在工作时,工作RESET数据库索引 一定坏。用95或NetWare作服务器则没有这个问题
这样做吧 方法一、建立两个别名,程序里使用Database控件提供的虚拟别名。在 程序进入时确认是使用网络还是单机,判断Database.AliasName是什么。 这样的话程序改动最小。(Session.NetFileDir=XXX当然少不了) 方法二、使用编译指令,干脆编译两套程序,两个图标,由用户自己选择。 另外有一点需要补充: 如果你的Paradox数据库放在NT上,千万千万要注意用户机(Win95/98)网卡不能 绑定除了IPX以外的网络协议,否则数据库正在工作时,工作RESET数据库索引 一定坏。用95或NetWare作服务器则没有这个问题
小 小天 Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-09 #10 colinyan:你的补充太棒了,谢谢你了。不过编译两个程序嘛,那那那会不会 很麻烦?要写两套也。 CJ:呵呵我就知道你会说出些文的东东啦,不过有总比没有好,那那那BDE API HELP 在DELPHI中的哪呢?
colinyan:你的补充太棒了,谢谢你了。不过编译两个程序嘛,那那那会不会 很麻烦?要写两套也。 CJ:呵呵我就知道你会说出些文的东东啦,不过有总比没有好,那那那BDE API HELP 在DELPHI中的哪呢?
C CJ Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-09 #11 精彩?faint! 写两个程序绝对不如改程序简单! 实际上写两个程序还设置两个别名,不如直接改程序,判断网络连接(用PING的) 如果已经连接,则用NETALIAS否则NATIVEALIAS,改变很简单,改变所有TDATABASE 的就可以,不过问题还没解决呀?如果让拥护选择,只要给个用户参数即可,何必写 两个程序呢? DELPHI4/BDE/有HELP的,好象D3的程序组里也有 >我就知道你会说出些文的东东啦 什么意思?
精彩?faint! 写两个程序绝对不如改程序简单! 实际上写两个程序还设置两个别名,不如直接改程序,判断网络连接(用PING的) 如果已经连接,则用NETALIAS否则NATIVEALIAS,改变很简单,改变所有TDATABASE 的就可以,不过问题还没解决呀?如果让拥护选择,只要给个用户参数即可,何必写 两个程序呢? DELPHI4/BDE/有HELP的,好象D3的程序组里也有 >我就知道你会说出些文的东东啦 什么意思?
C colinyan Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-10 #12 使用编译指令的好处就在差不多的程序无需写几套 例如:网络版/单机版/使用版等等,下面我给一个简 单的例子. {$IFDEF NET} Database1.AliasName:='My_NetAlias'; //-----Line1 {$ELSE} Database1.AliasName:='My_Alias'; //-----Line2 {$ENDIF} 如果你定义了NET,那么DELPHI会自动编译Line1而不会 编译Line2,如果没有定义NET系统会不编译Line1,而去 编译Line2.怎么样,和写程序差不多把,建议你去参看 RxLib的原码,你可以学到很多.例如Net在哪里定义 顺便说一句,如果你定义的Net是全程使用(即有可能再任何 一个过程里使用)你可以在Project菜单中的Option里 选择Directoris/Condtionals页,在Conditionals Defines里 填入NET即可,如果用多个变量请使用","分开.
使用编译指令的好处就在差不多的程序无需写几套 例如:网络版/单机版/使用版等等,下面我给一个简 单的例子. {$IFDEF NET} Database1.AliasName:='My_NetAlias'; //-----Line1 {$ELSE} Database1.AliasName:='My_Alias'; //-----Line2 {$ENDIF} 如果你定义了NET,那么DELPHI会自动编译Line1而不会 编译Line2,如果没有定义NET系统会不编译Line1,而去 编译Line2.怎么样,和写程序差不多把,建议你去参看 RxLib的原码,你可以学到很多.例如Net在哪里定义 顺便说一句,如果你定义的Net是全程使用(即有可能再任何 一个过程里使用)你可以在Project菜单中的Option里 选择Directoris/Condtionals页,在Conditionals Defines里 填入NET即可,如果用多个变量请使用","分开.