# Ionic 3 + sqlite - modal onDidDismiss not returning data

**URL:** <https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894>\
**Category:** Ionic Native\
**Created:** [November 18, 2018, 8:49pm UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894 "2018-11-18T20:49:13Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![rodolfocassorillo](https://avatars.discourse-cdn.com/v4/letter/r/a9adbd/32.png) [@rodolfocassorillo](https://forum.ionicframework.com/u/rodolfocassorillo)\
**Post date:** [November 18, 2018, 8:49pm UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/1 "2018-11-18T20:49:13Z")

</div>

Hi, i need some help!  
On my modal i insert data on a child table, the insert is success.  
But when i close my modal on event onDidDismiss of the modal i calculate the data that i insert in the modal but the data seems not insert yet but on the app with the modal closed the data was successful inserted.

If i close and open the modal the data that was insert first time i open the modal is there and work. But in the same time that i close the modal and try to select the inserted data on the event onDidDismiss the data is not there yet.

Some idea ?  
What can i do ?

---

<div class="post-metadata">

**Author:** ![rodolfocassorillo](https://avatars.discourse-cdn.com/v4/letter/r/a9adbd/32.png) [@rodolfocassorillo](https://forum.ionicframework.com/u/rodolfocassorillo)\
**Post date:** [November 19, 2018, 1:56am UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/2 "2018-11-19T01:56:17Z")

</div>

Please someone ? I really need to solve this

---

<div class="post-metadata">

**Author:** ![MattE](https://sea1.discourse-cdn.com/ionicframework/user_avatar/forum.ionicframework.com/matte/32/66712_2.png) [@MattE](https://forum.ionicframework.com/u/MattE)\
**Post date:** [November 19, 2018, 7:46am UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/3 "2018-11-19T07:46:21Z")

</div>

Please post the code that doesn’t work.  
Otherwise it’s impossible to help you.

---

<div class="post-metadata">

**Author:** ![rodolfocassorillo](https://avatars.discourse-cdn.com/v4/letter/r/a9adbd/32.png) [@rodolfocassorillo](https://forum.ionicframework.com/u/rodolfocassorillo)\
**Post date:** [November 19, 2018, 4:28pm UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/4 "2018-11-19T16:28:56Z")

</div>

**Modal:**

```auto
//---begin modal----

  modalItensVenda(id: number, vendido: string = null) {
    const modalOptions: ModalOptions = {
      showBackdrop: false,
      enableBackdropDismiss: false,
      cssClass: "modalCSS"
      // enterAnimation: 'modal-alert-pop-in',
      // leaveAnimation: 'modal-alert-pop-out'
    };

    const modalItensVenda: Modal = this.modalCtrl.create(ModalItensVendaPage, { produto: id, vendido: vendido }, modalOptions);

    modalItensVenda.onWillDismiss((data) => {
      console.log('aqui vai fechar')
    });

    modalItensVenda.onDidDismiss((data) => {
      console.log('aqui o modal já fechou')
      this.getAllItensVenda();
      this.calculaVenda();
    });

    modalItensVenda.present();

  }
//----- end of modal -------

```

The problem is: I have a page and i call this modal, the modal has a insert in the sqlite database, the insert work ok but on the event “onDidDismiss” of this modal I call two methods and this methods check the insert I did before to calculate some fields, but the select does’t return any data, but if I open and close the modal again the data i inserted the first time i opened the modal is there and the select return ok.  
But I need this data on this event “onDidDismiss”.  
I try to call the methods in the “ionDidEnter” event of the screen i call the modal but does’t work too.

I will try to explain with this screenshots:

 ![1](https://global.discourse-cdn.com/ionicframework/original/3X/e/d/ed1941208840d469da9addaaa3ddd9561273c551.jpeg) ![2](https://global.discourse-cdn.com/ionicframework/original/3X/e/1/e1401259ae701d3aa04bb940c1058091dfbc7600.jpeg) ![3](https://global.discourse-cdn.com/ionicframework/original/3X/e/7/e71a7a255909c1872f70f5fd6b1d6ac71f6dbeee.jpeg)

---

<div class="post-metadata">

**Author:** ![rodolfocassorillo](https://avatars.discourse-cdn.com/v4/letter/r/a9adbd/32.png) [@rodolfocassorillo](https://forum.ionicframework.com/u/rodolfocassorillo)\
**Post date:** [November 19, 2018, 4:51pm UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/5 "2018-11-19T16:51:56Z")

</div>

The other two screenshots:

 ![4](https://global.discourse-cdn.com/ionicframework/original/3X/5/c/5c7a8677011d7186842ed722fe149d714f933095.jpeg) ![5](https://global.discourse-cdn.com/ionicframework/original/3X/7/3/73d20107f405cb6d4393a3147f540b88d4b86b9a.jpeg)

---

<div class="post-metadata">

**Author:** ![rodolfocassorillo](https://avatars.discourse-cdn.com/v4/letter/r/a9adbd/32.png) [@rodolfocassorillo](https://forum.ionicframework.com/u/rodolfocassorillo)\
**Post date:** [November 20, 2018, 7:08pm UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/7 "2018-11-20T19:08:05Z")

</div>

Anyone can help me with this ?

---

<div class="post-metadata">

**Author:** ![rodolfocassorillo](https://avatars.discourse-cdn.com/v4/letter/r/a9adbd/32.png) [@rodolfocassorillo](https://forum.ionicframework.com/u/rodolfocassorillo)\
**Post date:** [November 23, 2018, 6:22pm UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/8 "2018-11-23T18:22:22Z")

</div>

Anyone can help me with this ?

---

<div class="post-metadata">

**Author:** ![jjdev](https://avatars.discourse-cdn.com/v4/letter/j/58956e/32.png) [@jjdev](https://forum.ionicframework.com/u/jjdev)\
**Post date:** [November 23, 2018, 7:23pm UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/9 "2018-11-23T19:23:26Z")

</div>

> [@rodolfocassorillo](#):
>
> ModalItensVendaPage

can you post the code for this page?

Ive been working with Ionic v4 now but, if remember correctly, it should implement `ViewController` to call the `ViewController.dismiss(data)` on the code that executes on your ‘OK’ button. Then the `onDidDismiss()` should catch that data

[advanced ModalController usage](https://ionicframework.com/docs/api/components/modal/ModalController/#advanced)

---

<div class="post-metadata">

**Author:** ![rodolfocassorillo](https://avatars.discourse-cdn.com/v4/letter/r/a9adbd/32.png) [@rodolfocassorillo](https://forum.ionicframework.com/u/rodolfocassorillo)\
**Post date:** [November 27, 2018, 9:25pm UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/10 "2018-11-27T21:25:10Z")

</div>

Does’t work! I already use the viewController please help me.

```auto
  constructor(private navCtrl: NavController,
              private toast: ToastController,
              private productProvider: ProductProvider,
              private itensVendaProvider: ItensVendaProvider,
              private navParams: NavParams,
              private view: ViewController,
              private alertCtrl: AlertController,
              private photoViewer: PhotoViewer) {

      this.parIdVenda = this.navParams.data.venda;
      this.parIdProduto = this.navParams.data.produto;
      this.parIdTabelaPreco = this.navParams.data.tabelaPreco;
      this.parVendido = this.navParams.data.vendido;

      this.itensVenda = new ItensVenda();
      this.produto = new Produto();

      if (this.parIdProduto) {
        this.id_produto = this.parIdProduto;
        this.productProvider.getDetalhe(this.id_produto)
          .then((result: any) => {
            this.product = result;
          })
      };

      if (this.parIdProduto) {
        this.productProvider.get(this.id_produto)
          .then((result: any) => {
            this.produto = result;
          })
      };

      if (this.parIdVenda) {
        this.itensVenda.id_venda = this.parIdVenda;
      };

      if (this.parIdTabelaPreco) {      
        this.itensVenda.id_tabela_preco = this.parIdTabelaPreco;
      };

      this.itensVendaProvider.getItem(this.itensVenda.id_venda, this.id_produto, this.parIdTabelaPreco)
        .then((result: any[]) => {
            this.itensVendaValida = result;
            if(this.itensVendaValida.length > 0){
              this.parVendido = 'S';
            }else{
              this.parVendido = 'N';
            }
        });
}

  closeModal(){
    this.view.dismiss();

  }
....
}

```

---

<div class="post-metadata">

**Author:** ![rodolfocassorillo](https://avatars.discourse-cdn.com/v4/letter/r/a9adbd/32.png) [@rodolfocassorillo](https://forum.ionicframework.com/u/rodolfocassorillo)\
**Post date:** [November 27, 2018, 9:25pm UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/11 "2018-11-27T21:25:24Z")

</div>

> [@rodolfocassorillo](#):
>
> Does’t work! I already use the viewController please help me.

Does’t work! I already use the viewController please help me.

---

<div class="post-metadata">

**Author:** ![MattE](https://sea1.discourse-cdn.com/ionicframework/user_avatar/forum.ionicframework.com/matte/32/66712_2.png) [@MattE](https://forum.ionicframework.com/u/MattE)\
**Post date:** [November 28, 2018, 12:39pm UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/12 "2018-11-28T12:39:38Z")

</div>

You have to pass some data in `this.view.dismiss()` to get it back in `onDidDismiss(data)`

---

<div class="post-metadata">

**Author:** ![rodolfocassorillo](https://avatars.discourse-cdn.com/v4/letter/r/a9adbd/32.png) [@rodolfocassorillo](https://forum.ionicframework.com/u/rodolfocassorillo)\
**Post date:** [November 28, 2018, 1:57pm UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/13 "2018-11-28T13:57:14Z")

</div>

I try and have the same problem … the method “this.calculaVenda();” doesn’t recognize that i inserted the item on the modal … but if i open the modal and close again the sum() in this method works ok

---

<div class="post-metadata">

**Author:** ![MattE](https://sea1.discourse-cdn.com/ionicframework/user_avatar/forum.ionicframework.com/matte/32/66712_2.png) [@MattE](https://forum.ionicframework.com/u/MattE)\
**Post date:** [November 28, 2018, 3:42pm UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/14 "2018-11-28T15:42:49Z")

</div>

I don’t understand your answer.  
`calculaVenda()` is only executed when you dismiss the modal, so it seems to do that.  
Where does the problem lie then?

---

<div class="post-metadata">

**Author:** ![rodolfocassorillo](https://avatars.discourse-cdn.com/v4/letter/r/a9adbd/32.png) [@rodolfocassorillo](https://forum.ionicframework.com/u/rodolfocassorillo)\
**Post date:** [November 29, 2018, 10:56am UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/15 "2018-11-29T10:56:52Z")

</div>

Yes the method executed correctly, but like i said in the modal i insert that with this method:

```auto
  confirmarItem(){
    if (this.itensVenda.qt_item == 0){
      this.itensVendaProvider.remove(this.itensVenda.id_venda, this.itensVenda.id_produto, this.itensVenda.id_tabela_preco);
      this.closeModal();
    }
    else if (this.itensVenda.qt_item > 0 && this.itensVenda.qt_item % this.produto.qt_multiplo > 0){
      this.toast.create({ message: 'Quantidade do Item inválida, não é múltiplo de: '+this.produto.qt_multiplo.toString()+'.', duration: 2000, position: 'botton' }).present();
    }else{
      if (this.parVendido == 'S'){
        this.itensVendaProvider.update(this.itensVenda);
      }else{
        this.itensVenda.vendido = 'S';
        this.itensVendaProvider.insert(this.itensVenda);
      }
      this.closeModal();
    }
  }

```

This method in the modal call my provider itensVendaProvider to insert data:

```auto
export class ItensVendaProvider {

  constructor(private dbProvider: DatabaseProvider) { }

  public insert(itemVenda: ItensVenda) {
    return this.dbProvider.getDB()
      .then((db: SQLiteObject) => {
        let sql = " INSERT INTO itens_venda ( id_venda "
                                        +" , key_venda "
                                        +" , nr_pedido "
                                        +" , id_tabela_preco "
                                        +" , id_produto "
                                        +" , nr_item "
                                        +" , qt_item "
                                        +" , vl_desconto "
                                        +" , pc_desconto "
                                        +" , vl_unit_item "
                                        +" , vl_total_item "
                                        +" , vendido "
                                        +" ) "
                +" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ";
        let data = [itemVenda.id_venda
                    ,itemVenda.key_venda
                    ,itemVenda.nr_pedido
                    ,itemVenda.id_tabela_preco
                    ,itemVenda.id_produto
                    ,itemVenda.nr_item
                    ,itemVenda.qt_item
                    ,itemVenda.vl_desconto
                    ,itemVenda.pc_desconto
                    ,itemVenda.vl_unit_item
                    ,itemVenda.vl_total_item
                    ,itemVenda.vendido];
        return db.executeSql(sql, data)
          .catch((e) => console.error(e));
      })
      .catch((e) => console.error(e));
  }

```

But this is a child table and when i close the modal i use this method `calculaVenda()` to calculate the father table with the data of the child table… but in this time when i close the modal the data seems not to have inserted yet on the sqlite database but if i open the modal an close just close don’t insert anything the method `calculaVenda()` return data of the database…

---

<div class="post-metadata">

**Author:** ![MattE](https://sea1.discourse-cdn.com/ionicframework/user_avatar/forum.ionicframework.com/matte/32/66712_2.png) [@MattE](https://forum.ionicframework.com/u/MattE)\
**Post date:** [November 29, 2018, 12:56pm UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/16 "2018-11-29T12:56:23Z")

</div>

That’s because executing SQL is an asynchronous task.  
This means that your app is still executing the SQL when closing the modal.

Look into promises and all will be clear.

---

<div class="post-metadata">

**Author:** ![rodolfocassorillo](https://avatars.discourse-cdn.com/v4/letter/r/a9adbd/32.png) [@rodolfocassorillo](https://forum.ionicframework.com/u/rodolfocassorillo)\
**Post date:** [November 29, 2018, 1:11pm UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/17 "2018-11-29T13:11:47Z")

</div>

MattE i will try today, afternoon i reply if work or not. Thank u so much for now…

---

<div class="post-metadata">

**Author:** ![mhartington](https://sea1.discourse-cdn.com/ionicframework/user_avatar/forum.ionicframework.com/mhartington/32/137757_2.png) [@mhartington](https://forum.ionicframework.com/u/mhartington)\
**Post date:** [July 19, 2021, 9:09pm UTC](https://forum.ionicframework.com/t/ionic-3-sqlite-modal-ondiddismiss-not-returning-data/147894/18 "2021-07-19T21:09:22Z")

</div>


