none
Codigo Buscar y Guardar helpmeeee!!! RRS feed

  • Pregunta

    • Me ayudan con el siguiente codigo por favaor e logrado hacer la busquedad como queria y logre cargar un campo pero al momento de guardar me genera un error


    Imports System.Data Imports System.data.SqlClient Public Class FHRenta Private oDataAdapter As SqlDataAdapter Private oDataSet As DataSet Private oDataTable As DataTable Private iPosicFilaActual As Integer Private oDataRow As DataRow ' DataSet a nivel de formulario para almacenar los datos Private editar As String = "SELECT cod_proyecto, tonelaje, capacidad, hora, precio, Total_Renta FROM renta_hora" Private Sub FHRenta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.AxSkin1.LoadSkin("C:\Documents and Settings\Administrador\Escritorio\SISACBEG\GUI\O-Universe.skn") Me.AxSkin1.ApplySkin(Me.Handle.GetHashCode) 'cargar texbox de modo Enable Me.TextBox2.Enabled = False Me.TextBox3.Enabled = False Me.TextBox6.Enabled = False Me.Button3.Enabled = True 'Maquillar Grid aunque se encuentre Invisible With DataGrid .RowsDefaultCellStyle.ForeColor = Color.Black .AlternatingRowsDefaultCellStyle.BackColor = Color.DarkSlateGray End With Dim oDataAdapter = New SqlDataAdapter("SELECT cod_proyecto, inicio_pro, fin_pro FROM proyecto", conexion) Dim oCommBuild As SqlCommandBuilder = New SqlCommandBuilder(oDataAdapter) oDataTable = New DataTable 'crear(DataSet) oDataSet = New DataSet() oDataTable = oDataSet.Tables.Add("oDataTable") oDataAdapter.Fill(oDataTable) Me.DataGrid.DataSource = oDataTable conexion.Close() End Sub Private Sub Txtbus_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txtbus.TextChanged ' El resultado se devuelve como un array de tipo DataRow Dim filas() As DataRow 'Buscar por Codigo de proyecto filas = oDataTable.Select("cod_proyecto LIKE '" & Txtbus.Text & "%'") ' Borrar los elementos anteriores Me.List.Items.Clear() ' Si hay datos, mostrar los apellidos If filas.Length > 0 Then ' Recorrer cada fila y mostrar los apellidos For Each dr As DataRow In filas Me.List.Items.Add(dr("inicio_pro").ToString) Me.List.Items.Add(dr("fin_pro").ToString) Next conexion.Close() End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Try Dim Dt1 As Date = CDate(Me.List.Items.Item(0).ToString) Dim Dt2 As Date = CDate(Me.List.Items.Item(1).ToString) Dim iDias As Integer = 0 iDias = DateDiff(DateInterval.Day, Dt1, Dt2, FirstDayOfWeek.Monday) TextBox4.Text = iDias.ToString() Catch ex As Exception MsgBox("No ha Introducido un Codigo a Buscar", MsgBoxStyle.Exclamation) End Try End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click ' crear adaptador oDataAdapter = New SqlDataAdapter("SELECT * FROM renta_hora", conexion) ' crear commandbuilder Dim oCommBuild As SqlCommandBuilder = New SqlCommandBuilder(oDataAdapter) ' crear dataset oDataSet = New DataSet() ' llenar con el adaptador el dataset oDataAdapter.Fill(oDataSet, "renta_hora") oDataTable = oDataSet.Tables.Add("oDataTable") conexion.Close() ' establecer el indicador del registro ' a mostrar de la tabla Me.iPosicFilaActual = 0 ' cargar columnas del registro en ' los controles del formulario Me.CargarDatos() ' obtener un objeto con la fila actual End Sub Private Sub CargarDatos() Dim oDataRow As DataRow oDataRow = Me.oDataSet.Tables("renta_hora").Rows(Me.iPosicFilaActual) 'Me.TxtCliente.Text = oDataRow("cod_cliente") Me.TextBox2.Text = oDataRow("tonelaje") 'Me.TxtDir.Text = oDataRow("direccion") 'Me.TxtTel.Text = oDataRow("telefono") 'Me.TxtFax.Text = oDataRow("fax") 'Me.TxtEmail.Text = oDataRow("e_mail") ' mostrar la posición actual del registro ' y el número total del registros Me.Label9.Text = "Registro: " & _ Me.iPosicFilaActual + 1 & " de " & _ Me.oDataSet.Tables("renta_hora").Rows.Count End Sub 'End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click TextBox6.Text = TextBox4.Text * TextBox5.Text TextBox2.Enabled = True TextBox3.Enabled = True TextBox6.Enabled = True Button3.Enabled = True End Sub Private Sub BtGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtGuardar.Click Dim oDataset As DataSet = New DataSet Dim oDataTable As DataTable = oDataset.Tables.Add("oDataTable") Dim oDataRow As DataRow ' obtener un nuevo objeto fila de la tabla del dataset oDataRow = Me.oDataSet.Tables("renta_hora ").NewRow() ' asignar valor a los campos de la nueva fila oDataRow("cod_proyecto") = Me.Txtbus.Text oDataRow("tonelaje") = Me.TextBox2.Text oDataRow("capacidad") = Me.TextBox3.Text oDataRow("hora") = Me.TextBox4.Text oDataRow("precio") = Me.TextBox5.Text oDataRow("renta_total") = Me.TextBox6.Text ' añadir el objeto fila a la colección de filas ' de la tabla del dataset Me.oDataSet.Tables("renta_hora").Rows.Add(oDataRow) ' actualizar los cambios realizados en el dataset ' contra la base de datos real Me.oDataAdapter.Update(Me.oDataSet, "renta_hora") 'MsgBox("Por Favor Revise los Datos Introducidos, Sobrepasado el Maximo de Caracteres o Codigos Duplicados ", _ 'MsgBoxStyle.Exclamation) End Sub
    jueves, 9 de julio de 2009 19:05

Respuestas

  • Hola bodan, lo que veo en tu código es que está faltando las instrucciones de ABM que te genera el sqlCommandBuilder y lo asigna al sqlDataAdapter para que los cambios sean reflejados en tu DB.

    Que seria de esta manera :

    Dim oDataAdapter = New SqlDataAdapter("SELECT cod_proyecto, inicio_pro, fin_pro FROM proyecto", conexion)
    Dim oCommBuild As SqlCommandBuilder = New SqlCommandBuilder(oDataAdapter)

    oDataAdapter.insetrCommand=oCommBuild.getInsertCommand
    oDataAdapter.updateCommand=oCommBuild.getUpdateCommand
    oDataAdapter.deleteCommand=oCommBuild.getDeleteCommand

    Espero te sirva.
    jueves, 9 de julio de 2009 21:08

Todas las respuestas

  • Hola bodan, lo que veo en tu código es que está faltando las instrucciones de ABM que te genera el sqlCommandBuilder y lo asigna al sqlDataAdapter para que los cambios sean reflejados en tu DB.

    Que seria de esta manera :

    Dim oDataAdapter = New SqlDataAdapter("SELECT cod_proyecto, inicio_pro, fin_pro FROM proyecto", conexion)
    Dim oCommBuild As SqlCommandBuilder = New SqlCommandBuilder(oDataAdapter)

    oDataAdapter.insetrCommand=oCommBuild.getInsertCommand
    oDataAdapter.updateCommand=oCommBuild.getUpdateCommand
    oDataAdapter.deleteCommand=oCommBuild.getDeleteCommand

    Espero te sirva.
    jueves, 9 de julio de 2009 21:08
  • disculpa es que aun no le entiendo bien a la logica en visual basic..pero me podrias decir en que parte del codigo inserto eso
    jueves, 9 de julio de 2009 21:22
  • No pasa nada, al momento que creas el sqlCommandBuilder y le asignas el sqlDataAdapter ya podes pasarle las instrucciones sql que te genera el Builder al Adaptador.

    Dim oDataAdapter = New SqlDataAdapter("SELECT cod_proyecto, inicio_pro, fin_pro FROM proyecto", conexion)
    Dim oCommBuild As SqlCommandBuilder = New SqlCommandBuilder(oDataAdapter)

    oDataAdapter.insetrCommand=oCommBuild.getInsertCommand
    oDataAdapter.updateCommand=oCommBuild.getUpdateCommand
    oDataAdapter.deleteCommand=oCommBuild.getDeleteCommand

    Cualquier cosa avisame.

    jueves, 9 de julio de 2009 21:29
  • en esta linea " oDataRow = Me.oDataSet.Tables("renta_hora ").NewRow() "me sale un error que dice "refencia a obejto no establecida como instancia de un objeto
    jueves, 9 de julio de 2009 21:32
  • pasame tu codigo a mi mail: llequini@hotmail.com

    jueves, 9 de julio de 2009 21:34
  • Parese ser que no tenes una tabla en tu dataset con el nombre renta_hora .
    Al momento que haces el fill del adaptador asegurate del nombre que le asignas a tu tabla es renta_hora
    jueves, 9 de julio de 2009 21:38
  • ok correo a sido enviado gracias por ayudarme
    jueves, 9 de julio de 2009 21:45
  • respondido, cualquier cosa avisame
    jueves, 9 de julio de 2009 22:07
  • dime has encontrado alguna solucion...ami problema
    por favor es de suma importancia tu ayuda
    te estare eternamente agradecido...ya te envie el correo
    jueves, 9 de julio de 2009 22:11
  • si, ya te lo envie.
    conectate al messenger
    jueves, 9 de julio de 2009 22:13
  • hola gracias por estarme ayudando pero me genero el mismo erro te mando una imagen para que la mires

    http://img44.imageshack.us/img44/4768/errorw.jpg
    jueves, 9 de julio de 2009 22:30
  • ese error es porque tenes un espacio demas al poonerle el nombre de la tabla renta_hora 
    jueves, 9 de julio de 2009 22:36
  • graicas tenias razon....pero ahora me salio este problema

    http://img43.imageshack.us/img43/796/error2f.jpg


    ya no se que hacer...no tenes un ejemplo de un codigo parecido por alguna parte
    toy desesperador
    jueves, 9 de julio de 2009 23:05
  • agregame al messenger que te ayudo
    jueves, 9 de julio de 2009 23:07