martes, 6 de marzo de 2012

Agregar filas nuevas con código

 Dim i As Integer
        If DataTable1DataGridView.Rows.Count > 0 Then
            For i = 0 To DataTable1DataGridView.Rows.Count - 2
                Dim nuevafila As DataRow = SuperDataSet.Tables("DetallesPedido").NewRow
                nuevafila.Item("IdPedido") = DataTable1DataGridView.Rows(i).Cells(0).Value
                nuevafila.Item("IdProducto") = DataTable1DataGridView.Rows(i).Cells(1).Value
                nuevafila.Item("Cantidad") = DataTable1DataGridView.Rows(i).Cells(3).Value

                SuperDataSet.Tables("DetallesPedido").Rows.Add(nuevafila)
            Next

        End If

Calcular datos dentro de celdas

 Private Sub DataTable1DataGridView_CellEndEdit(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataTable1DataGridView.CellEndEdit
        If e.ColumnIndex = 3 Then
            DataTable1DataGridView.CurrentRow.Cells(4).Value = DataTable1DataGridView.CurrentRow.Cells(2).Value * DataTable1DataGridView.CurrentRow.Cells(3).Value
        End If
    End Sub

Encontrar e insertar un dato en un datagridview después de dejar una celda

    Private Sub DataTable1DataGridView_CellLeave(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataTable1DataGridView.CellLeave
        If e.ColumnIndex = 1 Then
            Dim fila As Integer = ProductosBindingSource.Find("NombreProducto", DataTable1DataGridView.CurrentCell.EditedFormattedValue)

            ProductosBindingSource.Position = fila
            DataTable1DataGridView.CurrentRow.Cells(2).Value = SuperDataSet.Tables("Productos").Rows(fila).Item("Precio")
        End If
    End Sub

Primero se le asigna a fila la posición de esa fila en la tabla de donde queremos coger el dato
Luego asignamos a la celda (en este caso la 2 es precio) el valor de la tabla productos de la fila (fila que es el indice que hemos cogido antes) y de la fila la propiedad llamada precio, con lo cual cogerá el precio del nombre de producto que hemos seleccionado en la tabla origen

Filtro entre fechas y ordenado por un campo

 DataView1.Table = SuperDataSet.Tables("Pedidos")
        DataView1.RowFilter = "FechaPedido >='" & CDate(TextBox1.Text) & "' and Fechapedido <='" & CDate(TextBox2.Text) & "'"
        DataView1.Sort = "IdEmpleado"
        PedidosDataGridView.DataSource = DataView1

hay que convertir los .text en fecha

Filtrar datos con el dataview

 DataView1.Table = SuperDataSet.Tables("Compras")
        DataView1.RowFilter = "Recibido=False"
        ComprasDataGridView.DataSource = DataView1

Acuerdate de agregar el componente dataview al cuadro de herramientas de datos

Mostrar otro campo en un combobox con una tabla relacionada

En las propiedades en databindings

SelectedValue será el campo original de la tabla presente

Text será el campo que queramos relacionar (si tenemos un id, y preferimos que se vea el campo nombre)

DataSource la otra tabla, la original del dato que queremos mostrar (la que no está presente en el formulario)

Displaymember, elegimos el campo que queremos mostrar (aquí es mas fácil porqué nos mostrara solo los campos de la tabla datasource escogida)

Valuemember, el campo clave, el que tiene que ir relacionado con el selectedvalue de la otra tabla (también es "fácil" porque nos mostrará solo los campos de la tabla datasource)

Hacer una búsqueda de un registro

   Dim posicion As Integer
        posicion = ClientesBindingSource.Find(ToolStripComboBox1.SelectedItem.ToString, ToolStripTextBox1.Text)

        If posicion <> -1 Then
            ClientesBindingSource.Position = posicion
        Else
            MessageBox.Show("Ese cliente no existe")
        End If