Inna ilość rekordów niż jest w bazie

0

Cześć.

Robię poprawki do aplikacji która wcześniej działała bez zarzutu i zwracała rekordy idealnie. Żadnego problemu nie było.
Mam taki problem. Zdarza się np że mam 3 rekordy ze statusem N a zwraca mi 2 . I tak dalej. po prostu nie zwraca mi często tych samych ilości rekordów co mam w bazie.
Często w między czasie pracuję na aplikacji która działa na produkcji. I zauważyłem zależność że np zlecenie np 724xxx którego nie widzę u siebie na aplikacji testowej to zlecenie w które już wchodziłem chwilę wcześniej na produkcji aby je obejrzeć "co w sobie kryje" bo niestety pracować trzeba.

Po wejściu do aplikacji uruchamiana jest dana metoda i to ona odpowiada za połączenie się ze zleceniami.

public void Read_Main()
        {         
            
            try
            {
                using (OracleConnection conn = new OracleConnection(Connection.oradb))
                using (OracleCommand cmd = new OracleCommand("SELECT VBELN as ZLECENIE,KUNNR as ODBIORCA,DATA_ZLEC as DATA,UZEIT_ZLEC as GODZINA,MAIL_UTWORZYL as UTWORZYŁ,MAIL_PH as PH, STATUS as ST,WARTOSC_N AS WARTOSC FROM DWS1.AUTOMAT_NGL_POZ", conn))
                {
                    if (conn.State == ConnectionState.Closed)
                    {
                        conn.Open();
                        using (OracleDataReader reader = cmd.ExecuteReader())
                        {

                            reader.Read();

                            DataTable dataTable = new DataTable();
                            dataTable.Load(reader);



                            List<DataRow> zleceniaNowe = dataTable.AsEnumerable().Where(x => x.Field<string>("ST") == "N").ToList();


                            foreach (var item in zleceniaNowe)
                            {
                                Automation_Positive_Cena_2(conn, item["ZLECENIE"].ToString(), item["ODBIORCA"].ToString(), item["UTWORZYŁ"].ToString(), item["PH"].ToString());
                            }



                            dataGridView1.DataSource = dataTable;
                            dataGridView1.RowHeadersVisible = false;
                            dataGridView2.Hide();
                            label3.Show();
                            dataGridView2.DataSource = "";
                            negativetbox.Clear();



                        }
                        conn.Close();
                    }
                   
                }
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

0

Tak tylko na wszelki wypadek zapytam, czy sprawdzasz zleceniaNowe.Count przed foreach?

0

Przecież on pokazuje wszystkie, a obrabia tylko te z 'N'.

0

Tych rekordów brakuje ogólnie w liście czy dopiero po przepuszczeniu przez linq? Spróbuj porównać za pomocą .equals() string zamiast ==

0

zacząłbym od użycia dappera ;)

1

Debugowałeś to? Te rekordy nie wyświetlają się w dataGridView, czy nie są pobierane z bazy?
Jaki jest poziom izolacji transakcji?

1 użytkowników online, w tym zalogowanych: 0, gości: 1