注册 登录
编程论坛 VFP论坛

再求帮忙,先谢谢!

bdx808 发布于 2022-07-07 15:13, 2970 次点击
有一表tb,字段为xh(n,4)、xm(c,8),有若干行记录,现在想把1-15个数字从小到大依次从第一行开始赋给xh,把‘昨天、今天、明天’依次赋给xm,如附件图示
只有本站会员才能查看附件,请 登录
,请教代码怎么写?
23 回复
#2
吹水佬2022-07-07 15:49
昨天
今天
明天
第一步:重复5次(1...15)
第二步:重复第一步的结果

[此贴子已经被作者于2022-7-7 15:50编辑过]

#3
bdx8082022-07-07 16:07
问题是不知道代码怎么写,能写下代码吗?
#4
吹水佬2022-07-07 17:52
以下是引用bdx808在2022-7-7 16:07:20的发言:

问题是不知道代码怎么写,能写下代码吗?

先写3条记录,这个会吧
#5
bdx8082022-07-07 18:47
use tb
go top
do while .not.eof()
aa=xh
bb=xm
fxh=1
fxm=

见笑了真的不会了
#6
zhken2022-07-07 19:51
观察一下学会找规律
#7
zhken2022-07-07 20:19
随便写一下,没有认真审核

SELECT 0
CREATE CURSOR tb(xh n(4),xm c(8))
xh1=1
zl=1
zhs=1
DO WHILE .t.

DO WHILE zl<4
    APPEND BLANK
    REPLACE xh WITH xh1
    DO CASE
    CASE zl=1
    REPLACE xm WITH '昨天'
    CASE zl=2
    REPLACE xm WITH '今天'
    CASE zl=3
    REPLACE xm WITH '明天'
    ENDCASE
zl=zl+1
xh1=xh1+1
    IF xh1=16
        xh1=1
    ENDIF
    zhs=zhs+1
ENDDO

IF xh1=16
    xh1=1
ENDIF
zl=1
    IF zhs>32
        EXIT
    ENDIF
LOOP
ENDDO
BROWSE


#8
sdta2022-07-07 20:54
程序代码:
CREATE CURSOR tt (xh n(2), xm c(4))
FOR ln1 = 1 TO 2
    FOR ln2 = 1 TO 15
        INSERT INTO tt VALUES (ln2, "")
    ENDFOR
ENDFOR
INSERT INTO tt VALUES (1, "")
INSERT INTO tt VALUES (2, "")
REPLACE xm WITH ICASE(xh%3 = 1, "昨天", xh%3 = 2, "今天", "明天") ALL
BROWSE
#9
bdx8082022-07-08 07:57
都是牛人啊,版主的更简练、更难学会,多谢了!
#10
bdx8082022-07-08 08:01
以下是引用zhken在2022-7-7 19:51:05的发言:

观察一下学会找规律

是的,主要是没有基础,在书店也找不到这方面的书
#11
mywisdom882022-07-08 08:47
以下是引用bdx808在2022-7-8 07:57:06的发言:

都是牛人啊,版主的更简练、更难学会,多谢了!

CREATE CURSOR tt (xh n(2), xm c(4))
FOR ln1 = 1 TO 2  && 循环2次,生成1~15,16~30行的记录,序号分别是1~15,1~15
    FOR ln2 = 1 TO 15
        INSERT INTO tt VALUES (ln2, "")
    ENDFOR
ENDFOR
INSERT INTO tt VALUES (1, "") && 生成31行记录
INSERT INTO tt VALUES (2, "") && 生成32行记录
REPLACE xm WITH ICASE(xh%3 = 1, "昨天", xh%3 = 2, "今天", "明天") ALL && 这个用的妙,对XH取余,余数=1,对于是昨天,余数=2,对于是今天,余数=0,对应是明天
BROWSE
#12
a575985872022-07-08 11:41
REPLACE xm WITH ICASE(xh%3 = 1, "昨天", xh%3 = 2, "今天", "明天") ALL   
大侠这句用的好   同理似乎 以15整除也可以  

太好了  


[此贴子已经被作者于2022-7-8 11:42编辑过]

#13
吹水佬2022-07-08 11:47
以下是引用bdx808在2022-7-7 18:47:43的发言:

见笑了真的不会了

不要急,基本的先练练,如:创建表、添加记录、修改记录、查找数据......
本问题基本数据就是3条记录,其余的就是复制
程序代码:
CREATE CURSOR tb (xh n(4), xm c(8))
CREATE CURSOR tmp (xh n(4), xm c(8))
INSERT INTO tmp VALUES (0, "昨天")
INSERT INTO tmp VALUES (0, "今天")
INSERT INTO tmp VALUES (0, "明天")
SELECT tb
FOR i=1 TO 5
    APPEND FROM DBF("tmp")
ENDFOR
REPLACE ALL xh WITH RECNO()
SELECT * FROM tb
#14
aqyejun2022-07-08 15:39
ICASE()这是VFP9.0的函数,VFP6.0没有!

[此贴子已经被作者于2022-7-8 15:49编辑过]

#15
a575985872022-07-08 16:13
献丑了,借用前面大侠的经验,一句命令回答题目任务

CREATE CURSOR tt (xh n(2), xm c(4))
FOR k = 1 TO 50
     INSERT INTO tt (xh,xm) VALUES (k, "姓名")
ENDFOR
&&=====================准备记录数据

REPLACE xh WITH xh%15, xm WITH ICASE(xh%3 = 1, "昨天", xh%3 = 2, "今天", "明天") ALL
&&此 一句命令完成题目任务
REPLACE xh WITH RECNO()%15, xm WITH ICASE(xh%3 = 1, "昨天", xh%3 = 2, "今天", "明天")  ALL
&&也可以用这句命令,更严谨符合要求
REPLACE xh WITH  15 FOR xh=0 all    &&此句对 0 加以修正或合并的前一个命令中

BROWSE

[此贴子已经被作者于2022-7-8 16:22编辑过]

#16
吹水佬2022-07-08 16:16
回复 15楼 a57598587
看LZ提供图片显示的数据,xh不是顺序的,是1--15的重复
#17
a575985872022-07-08 16:29
CREATE CURSOR tt (xh n(2), xm c(4))
FOR k = 1 TO 50
     INSERT INTO tt (xh,xm) VALUES (k, "姓名")
ENDFOR
&&=====================准备记录数据


REPLACE xh WITH  ICASE(RECNO()%15=0,15,RECNO()%15<>0,RECNO()%15) , xm WITH ICASE(xh%3 = 1, "昨天", xh%3 = 2, "今天", "明天")  all
&&也可以用这句命令
BROWSE
#18
a575985872022-07-08 16:30
回复 16楼 吹水佬
惭愧  谢谢

我是从你的程序中学到的思路  谢谢
#19
a575985872022-07-08 16:33
有一表tb,字段为xh(n,4)、xm(c,8),有若干行记录,现在想把1-15个数字从小到大依次从第一行开始赋给xh,把‘昨天、今天、明天’依次赋给xm,如附件图示

原本有若干条记录   不知几条
问题1、现在想把1-15个数字从小到大依次从第一行开始赋给xh,
问题2、把‘昨天、今天、明天’依次赋给xm


我以记录号为依据使用大侠提供的函数完成问题1和2

REPLACE xh WITH  ICASE(RECNO()%15=0,15,RECNO()%15<>0,RECNO()%15) , xm WITH ICASE(xh%3 = 1, "昨天", xh%3 = 2, "今天", "明天")  all


[此贴子已经被作者于2022-7-8 16:35编辑过]

#20
吹水佬2022-07-08 16:41
回复 19楼 a57598587
看图片应该是这意思:
程序代码:

CREATE CURSOR tmp (xh n(4), xm c(8))
FOR i=1 TO 5
    INSERT INTO tmp VALUES (0, "昨天")
    INSERT INTO tmp VALUES (0, "今天")
    INSERT INTO tmp VALUES (0, "明天")
ENDFOR
REPLACE ALL xh WITH RECNO()
n = 2
CREATE CURSOR tb (xh n(4), xm c(8))
FOR i=1 TO n
    APPEND FROM DBF("tmp")
ENDFOR
SELECT * FROM tb

#21
a575985872022-07-08 16:45
回复 20楼 吹水佬
你好  你是做成他图片的结果了,但他的前提条件是有记录若干条   在他的若干条记录上在完成到图片的样子的

我是这样理解的
#22
a575985872022-07-08 16:47
程序代码:
CREATE CURSOR tt (xh n(2), xm c(4))
FOR k = 1 TO 50
     INSERT INTO tt (xh,xm) VALUES (k, "姓名")
ENDFOR
&&=====================准备若干条记录数据


REPLACE xh WITH  ICASE(RECNO()%15=0,15,RECNO()%15<>0,RECNO()%15) , xm WITH ICASE(xh%3 = 1, "昨天", xh%3 = 2, "今天", "明天")  all
&&也可以用这句命令
BROWSE
#23
吹水佬2022-07-08 17:13
手段不重要,重要是能达到要求的结果
#24
bdx8082022-07-14 17:35
当时得到解决后就结贴了,……没想到版主等各位大神都在指点,在此多谢了!
1