如何将数据网格视图中的多个行值插入到表的单个字段中
本文关键字:插入 字段 单个 数据网 数据 网格 视图 | 更新日期: 2023-09-27 18:31:30
我得到了一个表格,我在其中列出了客户想要购买的文章,我需要将所有文章名称保存到一个字段中,如下所示: article 1, article 2, article 3
所以当我打印报告时,我可以看到一行中的所有文章,但我真的不知道该怎么做 我尝试了几种方法,但我唯一能做的就是计算 ammount行,顺便说一下,我使用参数在其他字段中插入值,所以我无法让它更改查询,这就是我正在使用的:
private void btnfacturar_Click(object sender, EventArgs e)
{
var articulos = new List<string>();
var combinedString = string.Empty;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
string strArticulos = row.Cells["Articulos"].Value.ToString();
articulos.Add(strArticulos); //this should make it easier for you to understand
}
combinedString = string.Join<string>(" ", articulos);
try
{
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(@"Data Source=USER-PC;Initial Catalog=dbpuntodeventa;Integrated Security=True");
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO equipos VALUES (@nombre,@estado,@servicio,@fechaderecepcion,@nombredecliente, @apellido, @edad, @documento,@tipodedocumento,@email,@telefono,@direccion,@imagen,@piezas,@tipodepago,@abono,@garante,@preciodepiezas,@manodeobra,@total,@devuelta,@descuento,@imagendedocumento,@pago,@itbis,@tamaño,@capacidad,@marca,@modelo)";
cmd.Parameters.Add("@nombre", System.Data.SqlDbType.VarChar, 30);
cmd.Parameters.Add("@estado", System.Data.SqlDbType.VarChar, 100);
cmd.Parameters.Add("@servicio", System.Data.SqlDbType.VarChar, 40);
cmd.Parameters.Add("@fechaderecepcion", System.Data.SqlDbType.VarChar, 30);
cmd.Parameters.Add("@nombredecliente", System.Data.SqlDbType.VarChar, 10);
cmd.Parameters.Add("@apellido", System.Data.SqlDbType.VarChar, 25);
cmd.Parameters.Add("@edad", System.Data.SqlDbType.Int);
cmd.Parameters.Add("@documento", System.Data.SqlDbType.VarChar, 13);
cmd.Parameters.Add("@tipodedocumento", System.Data.SqlDbType.VarChar);
cmd.Parameters.Add("@email", System.Data.SqlDbType.VarChar, 35);
cmd.Parameters.Add("@telefono", System.Data.SqlDbType.VarChar, 12);
cmd.Parameters.Add("@direccion", System.Data.SqlDbType.VarChar, 50);
cmd.Parameters.Add("@imagen", System.Data.SqlDbType.Image);
cmd.Parameters.Add("@piezas", System.Data.SqlDbType.VarChar, 100);
cmd.Parameters.Add("@tipodepago", System.Data.SqlDbType.VarChar, 15);
cmd.Parameters.Add("@abono", System.Data.SqlDbType.VarChar, 10);
cmd.Parameters.Add("@garante", System.Data.SqlDbType.VarChar, 30);
cmd.Parameters.Add("@preciodepiezas", System.Data.SqlDbType.VarChar, 30);
cmd.Parameters.Add("@manodeobra", System.Data.SqlDbType.VarChar, 30);
cmd.Parameters.Add("@total", System.Data.SqlDbType.VarChar, 30);
cmd.Parameters.Add("@devuelta", System.Data.SqlDbType.VarChar, 30);
cmd.Parameters.Add("@descuento", System.Data.SqlDbType.VarChar, 5);
cmd.Parameters.Add("@imagendedocumento", System.Data.SqlDbType.Image);
cmd.Parameters.Add("@pago", System.Data.SqlDbType.VarChar, 30);
cmd.Parameters.Add("@itbis", System.Data.SqlDbType.VarChar, 30);
cmd.Parameters.Add("@tamaño", System.Data.SqlDbType.VarChar, 5);
cmd.Parameters.Add("@capacidad", System.Data.SqlDbType.VarChar, 100);
cmd.Parameters.Add("@marca", System.Data.SqlDbType.VarChar, 50);
cmd.Parameters.Add("@modelo", System.Data.SqlDbType.VarChar, 50);
cmd.Parameters["@nombre"].Value = equipoTextBox.Text;
cmd.Parameters["@estado"].Value = estadoTextBox.Text;
cmd.Parameters["@servicio"].Value = servicioComboBox.Text;
cmd.Parameters["@fechaderecepcion"].Value = txtfecha.Text;
cmd.Parameters["@nombredecliente"].Value = nombreTextBox.Text;
cmd.Parameters["@apellido"].Value = apellidoTextBox.Text;
cmd.Parameters["@edad"].Value = edadTextBox.Text;
cmd.Parameters["@documento"].Value = documentoMaskedTextBox.Text;
cmd.Parameters["@tipodedocumento"].Value = tipodedocumentoComboBox.Text;
cmd.Parameters["@email"].Value = emailTextBox.Text;
cmd.Parameters["@telefono"].Value = telefonoMaskedTextBox.Text;
cmd.Parameters["@direccion"].Value = direccionTextBox.Text;
System.IO.MemoryStream ms = new System.IO.MemoryStream();
imagenPictureBox.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
cmd.Parameters["@imagen"].Value = ms.GetBuffer();
cmd.Parameters["@piezas"].Value = articulos;
cmd.Parameters["@tipodepago"].Value = cbtipodepago.Text;
cmd.Parameters["@abono"].Value = txtabono.Text;
cmd.Parameters["@garante"].Value = txtgarante.Text;
cmd.Parameters["@preciodepiezas"].Value = txtpreciodepiezas.Text;
cmd.Parameters["@manodeobra"].Value = txtmanodeobra.Text;
cmd.Parameters["@total"].Value = txttotal.Text;
cmd.Parameters["@devuelta"].Value = txtsobrante.Text;
cmd.Parameters["@descuento"].Value = cbdescuento.Text;
System.IO.MemoryStream msi = new System.IO.MemoryStream();
imagendedocumentoPictureBox.Image.Save(msi, System.Drawing.Imaging.ImageFormat.Jpeg);
cmd.Parameters["@imagendedocumento"].Value = msi.GetBuffer();
cmd.Parameters["@pago"].Value = txtpago.Text;
cmd.Parameters["@itbis"].Value = txtitbis.Text;
cmd.Parameters["@tamaño"].Value = tamañoTextBox.Text;
cmd.Parameters["@capacidad"].Value = capacidadTextBox.Text;
cmd.Parameters["@marca"].Value = marcaTextBox.Text;
cmd.Parameters["@modelo"].Value = modeloTextBox.Text;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("Exito");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
if (txtgarante.Text == "")
{
frmfactura frma = new frmfactura();
frma.ShowDialog();
}
else
{
frmrecibo frm = new frmrecibo();
frm.ShowDialog();
frmfactura2 frmi = new frmfactura2();
frmi.ShowDialog();
}
}
如果此代码有效,则执行以下操作,将列表中的字符串存储到单个string
变量中
var articulos = new List<string>();
var combinedString = string.Empty;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
string strArticulos = row.Cells["Articulos"].Value.ToString();
articulos.Add(strArticulos); //this should make it easier for you to understand
}
combinedString = string.Join<string>(" ", articulos);
这将让所有文章用" "分隔,例如文章 1 Artice2 文章 3 字符串组合字符串 = 字符串。Join(" ", articulos);
我会string.Join<string>(" "
尝试这部分并尝试其他分隔符,例如*, , #
但在尝试插入 SQL Server 时使用特殊字符时要小心,它被视为Injection
,我会坚持使用,
逗号分隔符或空格" " 例如
如果您想调用上述方法,那么这里是以下内容
var combinedStr = InsertConcatValuesIntoDB(articulos);
private static stringInsertConcatValuesIntoDB(List<string> aList)
{
string combinedString = string.Join<string>(" ", aList);
return combinedString;
}
此行 cmd.Parameters["@piezas"]。值 = articulos;' 应该是这个
cmd.Parameters["@piezas"].Value = combinedStr;