关于更新文件的一对多问题.

发布于 2022-09-07 08:26:21 字数 2466 浏览 14 评论 9

在做练习时,一直有个问题想不过去!!
1、当要完全新加一条记录时,我给所有的字段全部赋值后,write   file1,结果是说记录更新又删除,不明白!!!(不给加)
2、在update文件的1对多时,比如我要更新key等于为@key的值在数据库中有4条记录(这里当然存储数据库的时候还有个字段决定key):
我要更新的key是klist   fld1(数据库中的主码是klist  fld1),ZAGAF是记录格式名.
                                                                          fld2
现在更新记录,更新的永远都是第一条记录,无法全部更新,不知道为什么?(这里没办法,我现在用insert和update<sqlrpgle>)代替了.
我用的是key        chain          ZAGAP           7138
                          DOW          *in71=*off
                          move          XXX              fld1
                          move          XXX              FLD2
                          ........
                           UPDATE     ZAGAF
                          DOU           *IN38=*OFF
            KEY       READE         ZAGAP               3871
                          ENDDO
                          ENDDO

这是一直困扰我的2个问题,高手帮帮忙,谢谢.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

遥远的她 2022-09-10 00:54:14

问题大概解决了,不过更新记录用RPGLE还是无法实现,更新的始终是第一条记录。
其实就是想个办法用RPGLE来代替以下的SQLRPGLE                       
C/EXEC SQL                                                      
C+ UPDATE ZAGAP SET                                             
C+ GAEFYY=:YEAR,GAEFMM=:MONTH,GAEFDD=AY,                     
C+ GAORMM=:MONTH1,GAORDD=AY1,GAORYY=:YEAR1,                  
C+ GADTYP=:KADTYP,GATRTO=:KATRTO,GAORBY=:KAORBY,               
C+ GAA1AX=:KAA1AX,GAA2AX=:KAA2AX,GAA3AX=:KAA3AX                 
C+ WHERE GATOUR=:LATOUR                                         
C+ WITH NC                                                      
C/END-EXEC     
那个write记录的问题是:
key      chain           file         71
           if    *in71=*on
           write      file
           endif
           if     *in71=*off
           delete/update   file
          endif
这样写(write出错了)不行,改成
key      chain           file         71
           if    *in71=*on
           write      file
           else
           delete/update   file
          endif
这样就OK了,可能就是UF   A和IF   A的问题吧.
谢谢大家.

一指流沙 2022-09-10 00:54:05

你不适合写文件型数据库处理程序。

樱花坊 2022-09-10 00:53:52

本帖最后由 bjrichard 于 2010-06-22 14:49 编辑

源来凯始玺欢你 2022-09-10 00:53:39

一。如果只是寫入 不需要UF A,只需要A或者 IF A
二          KEY        SETLL          ZAGAP            38
            if            *IN38=*OF
                          leave
                          endif
         
            KEY        READE         ZAGAP             71
                          DOW          *in71=*off
                          move          XXX              fld1
                          move          XXX              FLD2
                          ........
                           UPDATE     ZAGAF
                          
            KEY       READE         ZAGAP               71
                            ENDDO

水水月牙 2022-09-10 00:52:46

文件有A,声明为UF A 的..呵呵
我也不喜欢,也不明白那个dou   *in38=*off做什么的,老外的程序它这样写, ...
first_come 发表于 2010-06-19 15:21

    如果字段赋值是正确的,那么程序在做write时如果写入进系统会报错,你怎提示什么错误了吗?两个问题检查一下:文件是否做了大小的限制;字段赋值是否正确!

与之呼应 2022-09-10 00:50:12

文件有A,声明为UF A 的..呵呵
我也不喜欢,也不明白那个dou   *in38=*off做什么的,老外的程序它这样写,我也没办法...
再帮个忙啊...我连新加记录都不行,
key   chain     ZAGAP
        if not %found(ZAGAP)
        move   XXX  fld1
        ........
        write    zagap
       else
       .....(delete or update)这个我做出来了,没问题.
write不行.

落在眉间の轻吻 2022-09-09 22:50:45

不让添加记录的话,看看你定义文件时候有没有声明为"A"啊。

不明白你设了38指示器又没有做处理是为了什么。
如果真出错的话,很应该让程序报死啊,要不你就添加一段报错处理的代码呀。

陌生 2022-09-09 14:56:07

我的第二个循环是用来check数据是否出错的,只执行一次而已哦.
顺便问下,怎么新增一条记录,直接给所有字段move值后,马上write   file不行,这里需要注意些什么?

殤城〤 2022-09-09 06:36:09

本身程序就有问题,它一直在第二个循环里直到71亮。结果就只更新第一条记录啦。
可以更改为:
             key        chain          ZAGAP           7138
                          DOW          *in71=*off
                          if            *IN38=*On
                          leave
                          endif
                          move          XXX              fld1
                          move          XXX              FLD2
                          ........
                           UPDATE     ZAGAF
            KEY       READE         ZAGAP               3871
                          ENDDO

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文