ForAllとPatchを使った一括登録で、複数行のうち一部しかスプレッドシートに反映されない

ホーム フォーラム Power Apps 初心者向け ForAllとPatchを使った一括登録で、複数行のうち一部しかスプレッドシートに反映されない

タグ: ,

3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • #6250
    ao
    参加者
    Up
    1
    Down
    ::

    Power Appsのキャンパスアプリで注文アプリを作ろうとしています。

    注文の見出しと注文明細をスプレッドシートに登録する際、複数行ある明細の一部しか反映されず困っています。

    送信ボタンのOnSelectは以下の通りです。
    注文明細はコレクションに入れて、そこから取り出すようにしています。

    
    //注文見出しの登録
    Patch(
        注文テーブル, 
        Defaults(注文テーブル),
        {
            注文ID: Value(Last(注文T).注文ID + "1"),
            注文番号: txt注文番号.Text,
            出荷希望日: dte出荷希望日.SelectedDate,
            着荷希望日: dte着荷希望日.SelectedDate,
            出荷先ID: cmb出荷先.Selected.出荷先ID,
            出荷先名: cmb出荷先.Selected.出荷先名,
            郵便番号: cmb出荷先.Selected.郵便番号,
            住所: cmb出荷先.Selected.住所,
            TEL番号: cmb出荷先.Selected.TEL番号,
        }
    );
    //注文明細
    ForAll(
        OrderDetail,
        Patch(
            注文明細テーブル, 
            Defaults(注文明細テーブル),
            {
                order_detail_id: ThisRecord.col注文明細ID,
                order_id: ThisRecord.col注文ID,
                order_row_number: ThisRecord.col注文行番号,
                product_id: ThisRecord.col商品ID,
                order_amount: ThisRecord.col注文数量,
            }
        );
        Refresh(注文明細T);
    );
    Navigate(注文一覧)
    

    実際には登録する項目がもっと多いのですが、それが原因でしょうか?

    登録されるのを見ていると、スプレッドシートの同じ行に対して上書きされている様子でした。
    [スプレッドシート1行目] 1明細目
    [スプレッドシート2行目] 2明細目を一度書き込み、3明細目を上書き
    [スプレッドシート3行目] 4明細目

    なお、挙動は毎度バラバラです。1明細のときだけ安定しています。
    スプレッドシートを閉じた状態で登録してもダメでした。

    調べても同じような事例がなく、困り果てています。
    アドバイスいただけますと幸いです。何卒宜しくお願い致します。

    #6251
    ao
    参加者
    Up
    0
    Down
    ::

    そのほか関係ありそうな部分のコードも記載します。

    ScreenのOnVisible

    
    Refresh(注文明細テーブル);
    ClearCollect(
        OrderDetail,
        {
            col注文明細ID: Blank(),
            col注文ID: Blank(),
            col注文行番号: Blank(),
            col商品ID: Blank(),
            col注文数量: Blank()
        }
    );
    

    注文明細追加ボタンのOnSelect

    
    Collect(
        OrderDetail,
        {
            col注文明細ID: Last(注文明細テーブル).注文明細ID + CountRows(OrderDetail) + 1,
            col注文ID: Last(注文テーブル).注文ID + 1,
            col注文行番号: CountRows(OrderDetail) + 1,
            col商品ID: drp商品.Selected.商品ID,
            col注文数量: txt注文数量.Text,
        }
    );
    
    #6253
    Teruchika Yamada
    キーマスター
    Up
    0
    Down
    ::

    こんにちは。

    完全に個人的な予想ですが、更新する際に意図しない対象を指定しちゃってるのかな?と思いました。
    データソースが Excel(?)みたいなので、追加や更新にラグがある可能性もあるかもしれません。
    当方が Excel データソースを最近全く使ってないので、完全に予想です。ハズレてたら申し訳ないです。

    Power Apps の「監視」機能を利用すると、各アクションの Input/Output が確認できますので、処理を追っかけてみると良いかもしれません。

    ・監視(モニター)機能 ▪ モニターの概要(Microsoft Docs)
    https://docs.microsoft.com/ja-jp/power-apps/maker/monitor-overview?WT.mc_id=BA-MVP-5004053

    ・Power Apps のモニター・操作ログ確認機能が一般公開に(吉田の備忘録)
    https://memo.tyoshida.me/power-platform/powerapps/power-apps-monitor-generally-available/

    少々複雑というか、長い処理みたいなので、少しずつ状況を把握するとよろしいかと思いました。

3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • このトピックに返信するにはログインが必要です。
ツールバーへスキップ