cuando debería dataset reflejan las filas actualizadas cuentan después de una inserción en vb.net

StackOverflow https://stackoverflow.com/questions/1329856

  •  19-09-2019
  •  | 
  •  

Pregunta

Tengo una base de datos SQL, y han creado un conjunto de datos para una tabla de ejemplo en ella.

El conjunto de datos es HotelDataSet2 y el adaptador de la tabla de datos para insertar a que es Various_itemsTableAdapter.

 MsgBox(HotelDataSet2.various_items.Rows.Count)
 Various_itemsTableAdapter.Insert(Item_nameTextBox.Text, itemcode, PackingTextBox.Text, UomTextBox.Text, PriceTextBox.Text, RemarksTextBox.Text, TaxTextBox.Text, StatusCheckBox.Checked, Rate_inclusiveCheckBox.Checked)
 MsgBox(HotelDataSet2.various_items.Rows.Count)

Esto refleja siempre la misma cuenta, antes y después de inserting..But si ejecuto este

MsgBox(HotelDataSet2.various_items.Rows.Count)
Various_itemsTableAdapter.Insert(Item_nameTextBox.Text, itemcode, PackingTextBox.Text, UomTextBox.Text, PriceTextBox.Text, RemarksTextBox.Text, TaxTextBox.Text, StatusCheckBox.Checked, Rate_inclusiveCheckBox.Checked)
Various_itemsTableAdapter.Fill(HotelDataSet2.various_items)
MsgBox(HotelDataSet2.various_items.Rows.Count)

se muestra el nuevo recuento de ser 1 de la anterior. Así que llegué a la conclusión de que cada vez que cambie algunos datos de la tabla a través de adaptador de la tabla, tengo que rellenar siempre el conjunto de datos ?? ¿Cómo es útil entonces ??

¿Fue útil?

Solución

Vas de este por el camino equivocado. Usted debe estar utilizando el DataSet para realizar los cambios (es decir, crear de DataRow con sus tablas e insertar esas filas en la tabla), luego pase el DataTable apropiado de la DataSet a su TableAdapter con el fin de persistir los cambios en la base de datos llamando al Update función en la TableAdapter

tableAdapter.Update(dataSetName);

Acceso a la función Insert inserta directamente sólo esos datos en la tabla en la base de datos en sí; que no tiene ningún efecto sobre las copias locales de los datos (como su DataSet).

Como nota al margen, tratan de evitar el uso de funciones específicas del idioma como MsgBox. En su lugar, para mostrar un cuadro de mensaje intente llamar MessageBox.Show(...), ya que es independiente del lenguaje.

Editar

Para aclarar, la forma correcta de hacer esto es crear un nuevo DataRow, llenar sus columnas con los nuevos valores, añadir que DataRow a la tabla apropiada, a continuación, pasar a la mesa a la TableAdapter través de la función Update.

Por ejemplo, tengo ...

A DataSet named myDataSet
A DataTable in myDataSet called MyTable
A TableAdapter for MyTable called myTableAdapter
Two columns in that table, FirstName and LastName
Two TextBoxes called txtFirstName and txtLastName

Para insertar una fila con esos valores, yo haría esto:

DataRow row = myDataSet.MyTable.NewRow(); // creates a new row with the correct columns

row["FirstName"] = txtFirstName.Text;
row["LastName"] = txtLastName.Text;

myDataSet.MyTable.Rows.Add(row); // adds the new row to the in-memory table

myTableAdapter.Update(myDataSet); // persists all of the changes to the DataSet
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top