mohammed mqi Ответов: 0

Хранимая процедура не будет работать для других ПК


Привет, я использую C# с sql server, и у меня есть этот код с хранимой процедурой, которая отлично работает со мной, но с другими запусками хорошо, но эта хранимая процедура не работает на том ПК, я действительно не знаю, почему и вот мой код

private void button6_Click(object sender, EventArgs e)
        {
            Password frm = new Password();
            frm.ShowDialog();

            if (password_text == true)
            {
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    DataGridViewCheckBoxCell check = row.Cells[12] as DataGridViewCheckBoxCell;
                    if (check.Value != null)
                    {
                        try
                        {
                            //to check if not checked:
                            if (Convert.ToBoolean(check.Value) == true)
                            {
                                SelectedProcced(Convert.ToDateTime(row.Cells[1].Value), row.Cells[2].Value.ToString(), DateTime.Now.ToString("MM/dd/yyy"),_application.Shift.StaffId.ToString());
                            }
                        }
                        catch
                        {

                        }
                    }
                }
            }
            GetDataRP();
        } 



А вот мой метод который запускает хранимую процедуру которая не работает на другом ПК

public void SelectedProcced(DateTime? createdate, string itemid, string ReviewDate, string STAFFID)
        {
            connection.Open();
            SqlParameter[] param = new SqlParameter[4];
            param[0] = new SqlParameter("@createdate", SqlDbType.DateTime);
            param[0].Value = createdate;

            param[1] = new SqlParameter("@itemid", SqlDbType.NVarChar, 200);
            param[1].Value = itemid;

            param[2] = new SqlParameter("@ReviewDate", SqlDbType.NVarChar, 200);
            param[2].Value = ReviewDate;

            param[3] = new SqlParameter("@STAFFID", SqlDbType.NVarChar, 200);
            param[3].Value = STAFFID;

            ExecuteCommand("SelectedProcced", param);
            connection.Close();
        } 



а вот моя хранимая процедура


Create  PROCEDURE [dbo].[SelectedProcced]
@createdate datetime, @itemid NVarChar(200),@ReviewDate NVarChar(200),@STAFFID NVarChar(200)
as
UPDATE TOP (1) ax.RETAILTRANSACTIONSALESTRANS2 
 SET [Process]=1 
WHERE ([ITEMID]=@itemid or [BARCODE]=@itemid)


Что я уже пробовал:

я даже пытаюсь изменить имя моей хранимой процедуры, но проблема в том, что этот единственный метод не работает на другом ПК, но другие методы прекрасно работают с моим ПК и другими ПК
хранимая процедура уже установлена с другой БД ПК

Richard Deeming

Что не работать значит? Вы получаете сообщение об ошибке?

mohammed mqi

у меня нет сообщения об ошибке, но эта функция SelectedProcced не будет применяться к sql

Richard Deeming

Это, вероятно, потому, что у вас есть пустой catch блок, который глотает исключение.

Измените это, чтобы поймать исключение и отобразить или зарегистрировать ошибку.

mohammed mqi

проблема в том что он прекрасно работает со мной но мой друг ПК не применяет хранимую процедуру даже не дает мне никаких ошибок я также ввожу те же данные

ZurdoDev

Вы просто повторяетесь. Ричард говорил, что код, вероятно, генерирует ошибку на другом компьютере, но поскольку у вас есть пустой блок catch, вы никогда не узнаете об этом.

Сначала исправь это.

mohammed mqi

хорошо я получил это сообщение об ошибке
Объект не может быть приведен из DBNull в другие типы
Система.Значение dbnull.Система.В разделе iconvertible.ToBoolean(поставщик IFormatProvider)

Richard Deeming

Заменять:

if (check.Value != null)

с:
if (check.Value != null && !Convert.IsDBNull(check.Value))

mohammed mqi

все в порядке спасибо большое мистер Ричард

0 Ответов