Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Hybrid View

  1. #1

    DataTable perde record del database MySql

    Ciao a tutti,
    nell'effettuare una query su MySql utilizzando i datatable, noto con non poche preoccupazioni, che vengono restituite solo una parte delle righe effettivamente presenti sul database.


    Da quanto mi è parso di capire, quando gli si da in pasto il reader il sistema non considera le righe che hanno la colonna ID uguale, scartandole direttamente.


    Mi chiedo a questo punto cosa si possa fare, non sono riuscito a trovare una soluzione.
    Avete suggerimenti?

  2. #2
    la query ?
    O santo protettore del'informatico quadratico medio , se puoi allontana da me questo cetriolo amaro!
    Programmazione agile ? Guarda che qua già da un pezzo facciamo programmazione acrobatica !

  3. #3
    codice HTML:
    use vin_rp; select concat(mma_d.id, mma_d.id_riga) as id,  cds_art, mma_m.csg_doc,
     arti.cky_nat, arti.cky_merc, mma_d.cky_art, mma_m.csg_doc, mma_m.ngb_sr_doc,
     mma_m.ngl_doc, mma_m.cky_cnt_clfr, cky_cnt_agente, nqt_movm_um1,
     nmp_valmov_um1,nmp_valpro_um1, dtt_doc, (mma_d.ncf_conv * nqt_movm_um1) as qta2  from mma_m
      inner join mma_d on mma_m.id = mma_d.id inner join arti on mma_d.cky_art = arti.cky_art  where
     convert(mma_m.dtt_doc, date) between '2021-01-01' and '2021-12-31'

  4. #4

  5. #5
    Buono a sapersi

  6. #6
    E boh, alla fine ho migrato sul datareader e abbandonato i datatable.
    Faccio il ciclo con il reader.
    Certo che però è assurda questa cosa.

  7. #7
    postiamole leggibili le query per piacere

    codice:
    select 
      concat(mma_d.id, mma_d.id_riga) as id, 
      cds_art, 
      mma_m.csg_doc, 
      arti.cky_nat, 
      arti.cky_merc, 
      mma_d.cky_art, 
      mma_m.csg_doc, 
      mma_m.ngb_sr_doc, 
      mma_m.ngl_doc, 
      mma_m.cky_cnt_clfr, 
      cky_cnt_agente, 
      nqt_movm_um1, 
      nmp_valmov_um1, 
      nmp_valpro_um1, 
      dtt_doc, 
      (mma_d.ncf_conv * nqt_movm_um1) as qta2 
    from 
      mma_m 
      inner join mma_d on mma_m.id = mma_d.id 
      inner join arti on mma_d.cky_art = arti.cky_art 
    where 
      convert(mma_m.dtt_doc, date) between '2021-01-01' 
      and '2021-12-31'

  8. #8
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Non è che nella datatable il campo id è identity?

  9. #9
    Quote Originariamente inviata da URANIO Visualizza il messaggio
    Non è che nella datatable il campo id è identity?
    No, si tratta di una query in JOIN con più tabelle. È il database di un gestionale dove sono riportati su una tabella la testata dei documenti e nell'altra tabella le righe.

    Per cui ponendole in JOIN, l'ID viene ovviamente ridondato e lui evidentemente lo interpreta ignorando le righe con ID uguale.
    Stessa identica query ripeto funziona perfettamente con un ciclo sul datareader

  10. #10
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    SqlDataReader o Datatable, il risultato di una query deve essere uguale. Devi vedere ciò che vedi da un client DB quando la esegui.

    Guarda la seconda nota di questo articolo,
    https://docs.microsoft.com/en-us/dot...-a-dataadapter


    If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. You must define the PrimaryKey yourself to make sure that duplicate rows are resolved correctly. For more information, see Defining Primary Keys.
    Ultima modifica di djciko; 26-11-2021 a 00:27

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.