Foros del Web » Programación para mayores de 30 ;) » .NET »

traducir codigo de C# a VB .NET

Estas en el tema de traducir codigo de C# a VB .NET en el foro de .NET en Foros del Web. hola tengo el siguiente codigo Código: private void btAnadir_Click(object sender,System.EventArgs e) { DataTable miTabla=dataSet1.tabla1; DataRowCollection cfilas=miTabla.Rows;//aqui no puedo declaralo en VB DataRow nuevaFila; nuevaFila=miTabla.NewRow(); //columnas ...
  #1 (permalink)  
Antiguo 04/04/2009, 18:12
Avatar de Bazookao  
Fecha de Ingreso: diciembre-2008
Ubicación: Mexico
Mensajes: 139
Antigüedad: 15 años, 4 meses
Puntos: 1
Pregunta traducir codigo de C# a VB .NET

hola tengo el siguiente codigo
Código:
private void btAnadir_Click(object sender,System.EventArgs e)
{
DataTable miTabla=dataSet1.tabla1;
DataRowCollection cfilas=miTabla.Rows;//aqui no puedo declaralo en VB
DataRow nuevaFila;
nuevaFila=miTabla.NewRow();
//columnas de la tabla
nuevaFila[0]="nombre";
nuevaFila[1]="Direccion";
nuevaFila[2]="Telefono";
nuevaFila[3]="Observaciones";
cfilas.add(nuevaFila);//nu pudeo poner esto en VB por que no puedo declara la variable
botonUltimo.PerfomClick();//hace click en ultimo para mandar la posicion al final
textNombre.Focus();//enfocar caja de texto
}
lo que hace es añadir un registro en una tabla de datos

pero no puedo hacer
Código:
Dim cFilas As New DataRowCollection
me dice que "el tipo no tieen ningun constructor"

hasta ahora tengo
Código:
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Dim mitabla As New DataTable
        mitabla = DataSet11.Tabla1
        Dim cFilas As New DataRowCollection'aqui manda error
        Dim nfila As DataRow

        nfila = mitabla.NewRow
        nfila(0) = "Expr1"
        nfila(1) = "Expr2"
        nfila(2) = "Expr3"
        nfila(3) = "Expr4"
        cFilas.Add(nfila)
        Button4.PerformClick()
    End Sub
ayuda
  #2 (permalink)  
Antiguo 04/04/2009, 20:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: traducir codigo de C# a VB .NET

Lo que a mi enteder sucede es que estás suponiendo que una instancia de la clase DataRowCollection es necesaria para realizar la tarea que deseas. Y no es así.
Si entiendo bien la idea, lo que quieres es ingresar un registro con una cantidad X de datos en una tabla perteneciente al DataSet Tabla1. Para hacer eso no es necesario instanciar la colección de Rows o incluso crear una referencia a ella. Para eso solamente tienes que insertar el registro creado en la tabla a que pperteneces.
Incluso sobrecargar la clase DataSet creando una clase DataSet11 no tiene mucho sentido si no es por ortodoxia programática.
El tema aquí es que la forma má simple de hacer algo parecido es:
Código VB.Net:
Ver original
  1. Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
  2.         Dim mitabla As New DataTable
  3.         mitabla = DataSet11.Tables("Tabla1")
  4.         Dim nfila As DataRow
  5.         nfila = mitabla.NewRow
  6.         nfila.Item(0) = "Expr1"
  7.         nfila.Item(1) = "Expr2"
  8.         nfila.Item(2) = "Expr3"
  9.         nfila.Item(3) = "Expr4"
  10.         mitabla.Add(nfila)
  11.         Button4.PerformClick()
  12.     End Sub
De hecho, para que quede claro, desde el momento en que haces esto:
Código VB.Net:
Ver original
  1. nfila = mitabla.NewRow
ese DatoaRow solamente puede ser insertado en la tabla mitabla, porque pertenece a ella.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 04/04/2009, 20:18
Avatar de Bazookao  
Fecha de Ingreso: diciembre-2008
Ubicación: Mexico
Mensajes: 139
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: traducir codigo de C# a VB .NET

muchas gracias me has ayudado mucho
  #4 (permalink)  
Antiguo 04/04/2009, 21:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: traducir codigo de C# a VB .NET

Hay un tip mas:
Se suele necesitar utilizar un subconjunto de registros ante determinadas circunstancias. Por ejemplo, cuando quieres operar en ese subconjunto si uno o más de las columnas cumplen un determinado criterio. Para eso si obtienes una referencia a un subconjutno, pero la forma es por medio del método Select de los DataTable.
Me explico: Supongamos que quieres operar sobre el subconjunto de una tabla (Tabla1) cuando el campo "ID" sea igual o mayor a 10. Eso sería:
Código VB.Net:
Ver original
  1. Dim oRows() as DataRow
  2. oRows = DataSet1.Tables("Tabla1").Select("ID >= 10")

Como verás, para obtener el subconjunto debes crear un array de DataRows. Luego realizas un Select con el o los parámetros en forma de string. Ese modo de operar sobre la tabla te devuelve la referencia a un subconjunto de registros de la tabla, en forma de array.
Luego puedes tratar cada uno de los DataRows del array, recordando que para acceder a un item el prototipo es (en mi ejemplo) : oRows(indice).Item(indice o nombre)...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 08/04/2009, 14:59
Avatar de Bazookao  
Fecha de Ingreso: diciembre-2008
Ubicación: Mexico
Mensajes: 139
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: traducir codigo de C# a VB .NET

muchas gracias a gnzsoloyo por su aportacion

tambien paso a aclara un pequñito error que tiene el codigo
Código VB.NET:
Ver original
  1. mitabla.Add(nfila)
de ser sustituido por
Código VB.NET:
Ver original
  1. mitabla.Rows.Add(nfila)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:19.