2014-11-21 65 views
1

我得到了一份表格,我列出了客戶想要購買的物品清單,並且我需要將所有物品名稱保存到一個字段中,如下所示:article 1, article 2, article 3因此,當我打印報告時,我可以看到所有物品行,但我真的不知道如何做到這一點我嘗試了幾種方法,但我可以做的唯一事情就是統計行的數量,順便說一句,我將值插入其他字段使用參數,所以我不能讓它改變查詢,這是我使用的是什麼:如何將datagridview中的多個行值插入表的單個字段?

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(); 
    } 
}    
+0

你能證明你有什麼代碼以及你有什麼有效的代表性和你的預期結果是。 。保存每一行的所有值並將它們插入數據庫字段並不難。你熟悉'string.Join()'你可以將所有的值添加到'List 的字符串'例如' var articleList = new List ()'然後爲每個添加項目列表..然後更新實施'string.Join()'方法列表保存爲單個字符串值 – MethodMan 2014-11-21 20:23:33

+0

這樣的事情var articulos =新列表(); foreach(DataGridViewRow row dataGridView1.Rows) { articulos = Convert.ToString(row.Cells [「Precio」]。Value); }? – user3117314 2014-11-21 20:41:31

+0

請問您可以在您的原始問題中粘貼示例..? – MethodMan 2014-11-21 20:44:30

回答

0

如果此代碼然後執行以下操作後,在列表中的字符串存儲到一個單一的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 string combinedString = string.Join(「」,articulos);

我會嘗試用這部分string.Join<string>(" "並試圖插入到SQL Server它看作是Injection時使用特殊字符時,嘗試其他的分隔符,如*, , #但becareful,我會堅持使用,逗號分隔符或空格「」例如

如果要調用上面的方法

那麼這裏就是以下

var combinedStr = InsertConcatValuesIntoDB(articulos); 

private static stringInsertConcatValuesIntoDB(List<string> aList) 
{ 
    string combinedString = string.Join<string>(" ", aList); 
    return combinedString; 
} 

此行釐米。d.Parameters [「@ piezas」]值= articulos;`應該是這個

cmd.Parameters["@piezas"].Value = combinedStr; 
相關問題