Как сравнить 2 значения столбцов в строках DATAGRIDVIEW затем вставить тот же идентификатор, если он одинаков для строк c #? - PullRequest
0 голосов
/ 18 октября 2019

Я разрабатываю медицинскую лабораторную систему в приложении c # windows,

У меня есть эта проблема, когда я делаю лабораторный запрос для пациентов и выбираю необходимые тесты, которые мне нужно дать одинаковые (sample_Id) для каждого теста, если тест(sample_kind) и (отдела_ид) одинаковы,

и дают следующее (sample_id), если (sample_kind) и (отдел_ид) не совпадают для этого теста (см. Прикрепленное изображение для более подробной информации)

enter image description here

Например: строки с идентификаторами тестов 2 и 4 имеют одинаковый S-ID (sample_kind) и одинаковый D-ID (департамент_id) будут принимать один и тот же sample_id.

также тестовые идентификаторы 5 и 6 имеют одинаковый S-ID (sample_kind) и тот же D-ID (отдел_ид) будет принимать тот же sample_id.

также следующий тестовый идентификатор 16 строки: эта строка будет принимать следующий номер sample_id.

наконец, последний идентификатор теста строки 10 будет принимать последний sample_id.

В этом примере мне нужно сгенерировать новый 4 sample_id в зависимости от этого сравнения.

Я пробовал следующий код, но егогенерация саmple_id для каждой строки:

private void btnSave_Click(object sender, EventArgs e)
        {
            int x;
                txtSampleNo.Text = sample.GET_LAST_SAMPLE_ID().Rows[0][0].ToString();
                bool xsample = int.TryParse(txtSampleNo.Text, out x);



                if (xsample)
                {
                    for (int i = 0; i < TestsDataGrid.Rows.Count-1; i++)
                    {
                        int sample_kind = Convert.ToInt32(TestsDataGrid.Rows[i].Cells[7].Value);
                        int deptartment_id = Convert.ToInt32(TestsDataGrid.Rows[i].Cells[9].Value);

                        // if sample_kind and department_id are same for the rows then insert data and give same sample_no for each row else insert data and give next sample number

                        sample.ADD_HEMATOLOGY_SAMPLES(x, Convert.ToInt32(textCashOrder.Text), 1, Convert.ToInt32(textPatientID.Text),
                    textInvoice.Text, DateTime.Parse(OrderDate.Value.ToString()), DateTime.Parse(OrderDate.Value.ToString()), 1, "",
                    "", "", Convert.ToInt32(TestsDataGrid.Rows[i].Cells[7].Value), Convert.ToInt32(TestsDataGrid.Rows[i].Cells[9].Value));

                        sample.ADD_HEMATOLOGY_SAMPLES_DETAILS(x,
                                Convert.ToInt32(textCashOrder.Text),
                                Convert.ToInt32(TestsDataGrid.Rows[i].Cells[0].Value),
                                Convert.ToInt32(TestsDataGrid.Rows[i].Cells[0].Value),
                                Convert.ToInt32(TestsDataGrid.Rows[i].Cells[7].Value));
                        x = x + 1;
                        txtSampleNo.Text = x.ToString();
                    }
                }
                sample.UPDATE_HEMATOLOGY_COUNTER(Convert.ToInt32(txtSampleNo.Text));

        }

Это хранимые процедуры в SQLSERVER:

ALTER  proc [dbo].[ADD_HEMATOLOGY_SAMPLES]
@SAMPLE_ID int,
@ORDER_ID int,
@CUSTID int,
@PATIENT_NO int,
@INVOICE_ORDER_NO varchar(50),
@COLLECTION_DATE datetime,
@RECEIVING_DATE  datetime,
@SAMPLE_STATUS   int,
@SAMPLE_NOTE     varchar(100),
@COLLECTED_BY    varchar(50),
@RECEIVED_BY     varchar(50),
@SAMPLE_KIND     int,
@DEPTID          int
as 
INSERT INTO Lab_Hematology_Samples
           ([SAMPLE_ID]
           ,[ORDER_ID]
           ,[CUSTID]
           ,[PATIENT_NO]
           ,[INVOICE_ORDER_NO]
           ,[COLLECTION_DATE]
           ,[RECEIVING_DATE]
           ,[SAMPLE_STATUS]
           ,[SAMPLE_NOTE]
           ,[COLLECTED_BY]
           ,[RECEIVED_BY]
           ,[sample_kind]
           ,[deptid])
     VALUES
           (@SAMPLE_ID
           ,@ORDER_ID
           ,@CUSTID
           ,@PATIENT_NO
           ,@INVOICE_ORDER_NO
           ,@COLLECTION_DATE
           ,@RECEIVING_DATE
           ,@SAMPLE_STATUS
           ,@SAMPLE_NOTE
           ,@COLLECTED_BY
           ,@RECEIVED_BY
           ,@SAMPLE_KIND
           ,@DEPTID)

ALTER  proc [dbo].[ADD_HEMATOLOGY_SAMPLES_DETAILS]
@SAMPLE_ID int,
@ORDER_ID int,
@TESTID int,
@GROUPID int,
@SAMPLE_KIND int
as 

INSERT INTO [dbo].[Lab_Hematology_Samples_Details]
           ([SAMPLE_ID]
           ,[ORDER_ID]
           ,[TESTID]
           ,[GROUPID]
           ,SAMPLE_KIND)
     VALUES
           (@SAMPLE_ID
           ,@ORDER_ID
           ,@TESTID
           ,@GROUPID
           ,@SAMPLE_KIND)

Как выполнить сравнение для каждой строки перед вставкой данных идать одинаковые sample_id IF столбцы sample_kind (S-ID) и департамент_ид (D-ID) одинаковые ELSE дать следующий sample_id для строк, если столбцы sample_kind (S-ID) и отдел_ид (D-ID) отличаются в строке.

И как лучше сравнить производительность и скорость в приложении C # или с ХРАНЕННЫМИ ПРОЦЕДУРАМИ в SQL SERVER?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...