佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

楼主: maybird_2

Visual FoxPro 的疑难杂症

[复制链接]
发表于 9-7-2005 02:57 PM | 显示全部楼层
astral 于 9-7-2005 07:05 AM  说 :
wow~ flashang, 最近你还蛮活跃的, 好现象 来来来,顺便分享一下你对不同的buffer mode 的看法和心得

[ Last edited by astral on 9-7-2005 at 07:12 AM ]


walau, buffermode 好像是你和 kok 跟我讲的。。。
现在我大都用 5, update 之前全部才检查一次。。。
回复

使用道具 举报


ADVERTISEMENT

发表于 10-7-2005 01:42 PM | 显示全部楼层
前辈们好。

小弟有个问题。。。

“How to use FoxPro to export into multiple Excel sheet?”

Let's say a DBF export into 1Sheet, 2Sheet, 3Sheet of excel....
回复

使用道具 举报

发表于 10-7-2005 04:04 PM | 显示全部楼层
astral 于 9-7-2005 07:05 AM  说 :
wow~ flashang, 最近你还蛮活跃的, 好现象 来来来,顺便分享一下你对不同的buffer mode 的看法和心得

[ Last edited by astral on 9-7-2005 at 07:12 AM ]



buffer 和 file lock ( flock, rlock) 那一个比较好 ?
总觉得 file lock 是属于 manual control, buffer 是 auto control, 用auto的, 出了错也不知道 ...
回复

使用道具 举报

发表于 10-7-2005 11:41 PM | 显示全部楼层
weisely 于 10-7-2005 04:04 PM  说 :



buffer 和 file lock ( flock, rlock) 那一个比较好 ?
总觉得 file lock 是属于 manual control, buffer 是 auto control, 用auto的, 出了错也不知道 ...



只有在 multi user update 的时候才需要 lock, multi user reader 的时候则不需要
我用 buffer 是可以让使用者可以 save (update) 或 cancel edit (rollback)
而真的有多人更改的资料有时则需要用 rlock
不建议使用 flock, 除非你需要 update 整个 file 或大部分的 record
回复

使用道具 举报

发表于 12-7-2005 03:28 PM | 显示全部楼层
我两种都常用到。

buffer 通常用在 Drag&Drop 的控件 TextBox, Grid。

rlock 则用于 Auto-posting 时,被逼用到。
回复

使用道具 举报

发表于 12-7-2005 08:12 PM | 显示全部楼层
原帖由 白日梦 于 12-7-2005 03:28 PM 发表
我两种都常用到。

buffer 通常用在 Drag&Drop 的控件 TextBox, Grid。

rlock 则用于 Auto-posting 时,被逼用到。



我的rlock通常用在当transaction的Running Number 须要 +1 的时候

我觉得要 update Running number 是不可能用 buffer 的吧

比如我习惯把 invoice 最后一次的 running number 记录在一个sysauto.dbf 里

select sysauto
goto top
do while .t.
  if rlock()
      replace n_no with n_no + 1
      unlock
      exit
  else
      wait "Wait For Record To Be Updated" window nowait
  endif
enddo

就这样, 不管发生什么事情 ( server 当机, 突然停电, 或有100 个用户在同时间更新transaction的文件), 我的auto running number 永远不会出错

[ 本帖最后由 weisely 于 12-7-2005 08:15 PM 编辑 ]
回复

使用道具 举报

Follow Us
发表于 12-7-2005 10:15 PM | 显示全部楼层
原帖由 weisely 于 12-7-2005 08:12 PM 发表



我的rlock通常用在当transaction的Running Number 须要 +1 的时候

我觉得要 update Running number 是不可能用 buffer 的吧

比如我习惯把 invoice 最后一次的 running number 记录在一个sysauto.dbf  ...



可以考虑使用其他有 auto generate id 或 auto number filed 的 database
回复

使用道具 举报

发表于 13-7-2005 09:57 PM | 显示全部楼层
不好意思,真的没人懂得如何export a dbf into multiple sheet in excel?
回复

使用道具 举报


ADVERTISEMENT

发表于 14-7-2005 12:06 AM | 显示全部楼层
原帖由 Wong_Arthas 于 13-7-2005 09:57 PM 发表
不好意思,真的没人懂得如何export a dbf into multiple sheet in excel?


试过 download sample 可以用 active x 来做 multiple sheet excel, winword mail merge, 还有很多其他 ms office 的功能。

去问 google 吧
回复

使用道具 举报

发表于 14-7-2005 09:39 AM | 显示全部楼层
原帖由 Wong_Arthas 于 13-7-2005 09:57 PM 发表
不好意思,真的没人懂得如何export a dbf into multiple sheet in excel?

我不懂这么深,只会 single sheet 的。

这是我在某个VFP教学网站的公开编码,类似 VB 的 PrintForm 功能,因为 VFP 没有酱方便的,所以利用 Word 来把 Chart PrintScreen,你可以利用来参考及修改

  1. oWord = CreateObject("Word.Application")
  2. oDoc = oWord.Documents.Add()
  3. Thisform.oleChart.EditCopy()
  4. oWord.Selection.PasteSpecial(.F.,.F.,0,.F.,3)
  5. oDoc.PrintOut
  6. oDoc.Close(0)
  7. oWord.Quit
复制代码


oExcel = CreateObject("Excel.Application")
oWS = oExcel.WorkSheet.???
吧。。。吧。。。吧。。。吧。。。吧。。。

[ 本帖最后由 白日梦 于 14-7-2005 09:56 AM 编辑 ]
回复

使用道具 举报

发表于 15-7-2005 08:56 AM | 显示全部楼层
找到一点头绪了,不过是 VB 的写法
http://www.ccw.com.cn/htm/app/aprog/01_2_21_4.asp
回复

使用道具 举报

发表于 15-7-2005 11:26 AM | 显示全部楼层
请问有什麽方法用VFP8 set半张纸?

我是用VFP的report form print Official Receipt.

现在我是在Windows Me/XP的Control Panel -> Printer set 的。


问题是如果电脑format过就要另外再Control Panel -> Printer set过,很麻烦。

谢谢
回复

使用道具 举报

发表于 15-7-2005 08:15 PM | 显示全部楼层
原帖由 xiaoye 于 15-7-2005 11:26 AM 发表
请问有什麽方法用VFP8 set半张纸?

我是用VFP的report form print Official Receipt.

现在我是在Windows Me/XP的Control Panel -> Printer set 的。


问题是如果电脑format过就要另外再Control Pan ...



采用80年代foxpro for DOS 的编程方式来写printing command
这是根本不必用report designer的
用DOS 的方式来写, 很程式会很听话, 要printer 停在那里就那里, 可是 .... 嘿... 嘿... 我也不知道这可以不可以在visual foxpro8 中运行 ....

SET PRINTER TO &the_dest
SET PRINTER FONT "Arial",30
SET PRINTER ON
    IF atsay_flag
      SET DEVICE TO PRINTER
      # 1,0 SAY "Here is an @SAY in row 1"
    ENDIF
    ? "Test Line 1"
    ??? "Now printing a triple"
    WAIT WINDOW "Just did the first ??? command.  Press a key"
    ? "Test Line 2"
    ??? "Another triple"
    ? "Test Line 3"
    ?
    IF atsay_flag
      # 6,0 say "Another @SAY in row 6"
      SET DEVICE TO SCREEN
    ENDIF
    SET PRINTER OFF
    SET PRINTER TO
回复

使用道具 举报

发表于 16-7-2005 08:40 AM | 显示全部楼层
谢谢你们的帮忙,尤其是白日梦 。我再看看,如国有resource我会在这论坛报上。
回复

使用道具 举报

发表于 17-7-2005 10:41 PM | 显示全部楼层
原帖由 xiaoye 于 15-7-2005 11:26 AM 发表
请问有什麽方法用VFP8 set半张纸?

我是用VFP的report form print Official Receipt.

现在我是在Windows Me/XP的Control Panel -> Printer set 的。


问题是如果电脑format过就要另外再Control Pan ...


vfp 的 report 是会随着 printer 的型号、设定而变的。。。
回复

使用道具 举报

发表于 18-7-2005 08:48 AM | 显示全部楼层
原帖由 xiaoye 于 15-7-2005 11:26 AM 发表
请问有什麽方法用VFP8 set半张纸?

我是用VFP的report form print Official Receipt.

现在我是在Windows Me/XP的Control Panel -> Printer set 的。


问题是如果电脑format过就要另外再Control Pan ...

我公司印的 payslip 也是半张纸,我用一架机专门印的是 Windows 98SE 的印表机属性 Printer Properties 设定 Paper Size = Custom width x length length 就是那张纸的长度。

尤其是 Panasonic KX-P3626 和 Epson LQ-2170 旧款的印表机没有厂方真正的 XP driver。我试了下载新 driver 给 XP,但是没有。只有NT的,所以不能设定 Paper Size = Custom。

[ 本帖最后由 白日梦 于 18-7-2005 08:55 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 18-7-2005 12:39 PM | 显示全部楼层
原帖由 白日梦 于 18-7-2005 08:48 AM 发表

我公司印的 payslip 也是半张纸,我用一架机专门印的是 Windows 98SE 的印表机属性 Printer Properties 设定 Paper Size = Custom width x length length 就是那张纸的长度。

尤其是 Panasonic KX-P3626 和  ...


如果在printer properties 下设置我没有问题,问题是如果顾客重新装windows我就要帮他再设置过或在电话上教他如何设置。

所以我想如果可以用program来set就不用那么麻烦了.

在windows XP里,同样是在printer properties那儿set的,不过方法不大一样.
要在空位的地方RightClick滑鼠,再选Server Properties,然后选Create A New Form,更改Form Name(我通常都用Custom),再将Height改成5.5In.
回复

使用道具 举报

小李波特 该用户已被删除
发表于 18-7-2005 03:44 PM | 显示全部楼层

VFP7.0 TO VFP9.0


vfp70 里的 sql command:
select a, b, sum(c) from table_a group by a
行的通 ..

同样的 sql command,
在 vfp9.0 里竟然出现 error,

原来是 column b 在作怪 !!!
在 vfp9.0 里,
一定要同时 group by column a, b
select a, b, sum(c) from table_a group by a, b

晕了。。
难道要全部 report 去 test???



[ 本帖最后由 小李波特 于 18-7-2005 03:47 PM 编辑 ]
回复

使用道具 举报

发表于 18-7-2005 03:59 PM | 显示全部楼层
原帖由 小李波特 于 18-7-2005 03:44 PM 发表

vfp70 里的 sql command:
select a, b, sum(c) from table_a group by a
行的通 ..

同样的 sql command,
在 vfp9.0 里竟然出现 error,

原来是 column b 在作怪 !!!
在 vfp9.0 里,
一定 ...

不必大修改。

这指令作怪 SET ENGINEBEHAVIOR 70 | 80 | 90 (default)
你的情形是由 vfp7 升级 vfp9,在 main.prg 里设定 SET ENGINEBEHAVIOR 70 就搞定了!

我也是刚刚遇到这件事

[ 本帖最后由 白日梦 于 18-7-2005 04:01 PM 编辑 ]
回复

使用道具 举报

小李波特 该用户已被删除
发表于 18-7-2005 04:07 PM | 显示全部楼层

OH YES !!!
搞锭,
多谢白兄。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 5-12-2025 11:41 PM , Processed in 0.188071 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表