11 Replies Latest reply on Dec 2, 2008 12:00 PM by 662373

    FRM 30100

    423853
      Hi,

      I am using forms 9i (9.0.2.9.0) and using oracle 9i database (Oracle9i Enterprise Edition Release 9.2.0.4.0). I am getting the FRM - 30100 error while compiling when I have a block with no primary key. I looked up the online help which said
      "Cause: At least one item should be marked as being part of the primary key if one of the following is true: 1. The key mode for the block is either UPDATEABLE_PRIMARY_KEY or NON_UPDATEABLE_PRIMARY_KEY. 2. The key mode for the block is AUTOMATIC but the data source to which you are connected does not support UNIQUE key mode. "
      My block is based on a single table, the enforce primary key is NO, the locking mode is Automatic and the Key mode is Automatic. I do not understand why it is necessary to have a primary key item. Doesn't Oracle support the Unique key mode??

      Thanks,
      Monica
        • 1. Re: FRM 30100
          423853
          Just reposting. Hasn't anybody ever encountered this problem??

          Regards,
          Monica
          • 2. Re: FRM 30100
            or*429809*jt
            Hi Monica,
            For at least one item in the block, set the Primary Key item property to True.
            Regards,
            Ajeet
            • 3. Re: FRM 30100
              435552
              hi,

              itz not necessary that u need to have a primary key item for a block, when u are using locking mode & key mode as automatic.

              But if u are using the key mode as automatic u have to make sure that the datasource u are using supports "RowId" .

              check whether ur datasource supports rowid... and also try to connect to a different datasource & check whether the same problem still exists ...
              • 4. Re: FRM 30100
                435552
                can u make sure that the block's data source type is TABLE itself ??
                • 5. Re: FRM 30100
                  423853
                  Hi,

                  My block is based on a single table and the datasource property is set to table. I know what the workaround is for this problem. I did set the primary key property of an item to True and everything worked after that. What I want to find out is why this should be necessary even when none of the property settings of the block require a primary key in the block(as per the online help!) and the base table itself does not have a primary key.

                  Frank, is this a known bug or something?

                  Regards,
                  Monica
                  • 6. Re: FRM 30100
                    user346369
                    I ran into this same problem cloning a block in my form.

                    It turns out that you get this error, "FRM-30100: Block must have at least one primary key item." when the Query Data Source Name and the DML Data Target Name specify different tables.

                    Set DML Data Target Name blank, and the error goes away.
                    • 7. Re: FRM 30100
                      471948
                      I experienced the same problem. The Query Data Source Name was table and the DML Data Target Name was TABLE. As you can see, the problem was because of the "sensitiveness", I just put both in uppercase and problem solved.

                      Best wishes!
                      • 8. Re: FRM 30100
                        599568
                        Set Property of Block
                        DMLDataTarget type=None
                        • 9. Re: FRM 30100
                          Danish Hayder
                          Two SImple Steps

                          1-Open <Block> property pallet

                          2-SET ENFORCE PRIMARY KEY to No.


                          Regards
                          Danish Hayder

                          Message was edited by:
                          danish_rizvi
                          • 10. Re: FRM 30100
                            519916
                            If this doesn't work , try fgil's solution from above: Make sure that the Query Data Source Name and the DML Data Target Name are the same case (On the Block Properties Pallette).

                            It worked for me.
                            • 11. Re: FRM 30100
                              662373
                              Thanks a lot. Your solution is absolutely right.