You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

StokGiris窗体中选择的产品无法显示在dgvStokGiris中

问题排查与修复方案

以下是导致数据无法在dgvStokGiris中显示的核心问题及修复方案:

1. INSERT语句语法错误

UrunStokGiris窗体的插入命令中,VALUES子句存在无效语法,同时缺少durum字段赋值(你的查询逻辑只过滤durum='Beklemede'的记录):

// 修正后的INSERT语句
komut = new SqlCommand("INSERT INTO tbStokGiris (refno, ukodu, starih, stokgiren, tedarikid, durum) VALUES (@refno, @ukodu, @starih, @stokgiren, @tedarikid, 'Beklemede')", baglanti);

2. MessageBox确认逻辑不完整

原代码中确认弹窗的判断条件缺失具体枚举值,导致插入逻辑永远不会执行:

// 修正后的判断逻辑
if (MessageBox.Show("Bu ürün eklenecek?", pbaslik, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

3. 空Catch块无法捕获异常

原catch块为空,插入过程中出现错误无法及时发现,需添加异常提示:

catch (Exception ex)
{
    MessageBox.Show("Ürün ekleme hatası: " + ex.Message, pbaslik, MessageBoxButtons.OK, MessageBoxIcon.Error);
    if (baglanti.State == ConnectionState.Open) baglanti.Close();
}

4. LoadStokGiris中的查询问题

  • 原LIKE查询缺少通配符,仅匹配完全相等的refno;
  • 存在SQL注入风险,需改用参数化查询;
  • 未正确释放数据资源,易导致连接泄漏:

修正后的LoadStokGiris方法

public void LoadStokGiris()
{
    try
    {
        int i = 0;
        dgvStokGiris.Rows.Clear();

        // 使用using块自动释放资源
        using (var baglanti = new SqlConnection("你的数据库连接字符串"))
        {
            baglanti.Open();
            using (var komut = new SqlCommand("SELECT * FROM vwStokGiris WHERE refno = @refno AND durum = 'Beklemede'", baglanti))
            {
                komut.Parameters.AddWithValue("@refno", txtRefNo.Text);
                using (var dr = komut.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        i++;
                        dgvStokGiris.Rows.Add(i, dr[0].ToString(), dr[1].ToString(), dr[2].ToString(), dr[3].ToString(), dr[4].ToString(), dr[5].ToString(), dr[6].ToString(), dr[7].ToString());
                    }
                }
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Veri yükleme hatası: " + ex.Message, pbaslik, MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
}

5. 主窗体实例引用验证

确保UrunStokGiris中的stokGiris是主窗体的当前打开实例,而非新创建的实例。主窗体打开子窗体时需传递自身引用:

// 主窗体中打开子窗体的代码示例
private void btnUrunAra_Click(object sender, EventArgs e)
{
    var urunForm = new UrunStokGiris();
    urunForm.stokGiris = this; // 传递当前主窗体实例
    urunForm.ShowDialog();
}

排查步骤

  1. 执行修正后的代码,直接查询tbStokGiris表确认新记录是否插入成功;
  2. 检查新记录的durum字段值是否为Beklemede;
  3. 确认txtRefNo.Text的值与新记录的refno完全匹配;
  4. 查看异常提示,定位是否存在数据加载或插入环节的错误。

内容的提问来源于stack exchange,提问作者Ferhenk Tore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:53:18