muchisimas gracias por tu tiempo
explico nuevamente mi situacion, cada vez mas oscura jaja
utilize tu code pero despues de algun que otro retoque(por ejemplo la forma en que me conecto.) es como que nunca llega a su fin la ejecucion, no se porque sera, no se si sera la funcion o porq estoy procesando 7 mil registros.
dejo el codigo "modificado" para mirar y analizar.
En un modulo:
En el load del formulario(el formulario se llama frm_dimproducto)
En el sub añade:
yo quisiera creer que es por un tema del dataset, repito que mi experiencia con .net es de solo 1 semana.
tambien dejo el codigo de la funcion que realize en vb6 con el treeview perteneciente a los controles com, el cual no funciona por razones que desconozco, algun tipo de incopatibilidad.(directamente el treeview no funciona como deberia con .NET)
Disculpen lo extenso del post.
Saludos
explico nuevamente mi situacion, cada vez mas oscura jaja
utilize tu code pero despues de algun que otro retoque(por ejemplo la forma en que me conecto.) es como que nunca llega a su fin la ejecucion, no se porque sera, no se si sera la funcion o porq estoy procesando 7 mil registros.
dejo el codigo "modificado" para mirar y analizar.
En un modulo:
Código [Seleccionar]
Public ex As Exception 'variable que guardará una exepcion (error)
Public MyConexion As New OleDb.OleDbConnection() 'objeto de ADO.net para conectar con la BD
Public MiAdaptador As New OleDb.OleDbDataAdapter 'adaptador de datos
Public dsDataSet As New Data.DataSet() ' objeto que guardará los resultados de la consulta
Public strSQL As String 'para crear la consulta SQL
En el load del formulario(el formulario se llama frm_dimproducto)
Código [Seleccionar]
Private Sub frm_dimproducto_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
strSQL = "SELECT * FROM DimTempCustomer"
MiAdaptador = New OleDb.OleDbDataAdapter(strSQL, MyConexion.ConnectionString)
MiAdaptador.Fill(dsDataSet, "MiTabla")
Dim a As Integer
Dim Codigo, Descripcion, Padre As String
For a = 0 To dsDataSet.Tables("MiTabla").Rows.Count - 1
Codigo = Trim(dsDataSet.Tables("MiTabla").Rows(a).Item("DimT_Codigo"))
Descripcion = Trim(dsDataSet.Tables("MiTabla").Rows(a).Item("DimT_Descripcion"))
Padre = Trim(dsDataSet.Tables("MiTabla").Rows(a).Item("DimT_Padre"))
If Padre = "" Then
TreeView1.Nodes.Add(Descripcion)
añade(Codigo, TreeView1.Nodes(TreeView1.Nodes.Count - 1))
End If
Application.DoEvents()
Next
End Sub
En el sub añade:
Código [Seleccionar]
Sub añade(ByVal cod As String, ByVal node As TreeNode)
strSQL = "SELECT * FROM DimTempCustomer"
MiAdaptador = New OleDb.OleDbDataAdapter(strSQL, MyConexion.ConnectionString)
MiAdaptador.Fill(dsDataSet, "MiTabla2")
'variable que recorre las filas de la tabla
Dim a As Integer
Dim Codigo, Descripcion, Padre As String
For a = 0 To dsDataSet.Tables("MiTabla").Rows.Count - 1
Codigo = Trim(dsDataSet.Tables("MiTabla2").Rows(a).Item("DimT_Codigo"))
Descripcion = Trim(dsDataSet.Tables("MiTabla2").Rows(a).Item("DimT_Descripcion"))
Padre = Trim(dsDataSet.Tables("MiTabla2").Rows(a).Item("DimT_Padre"))
If Padre = cod Then
node.Nodes.Add(Descripcion)
añade(Codigo, node.Nodes(node.Nodes.Count - 1))
End If
Application.DoEvents()
Next
End Sub
yo quisiera creer que es por un tema del dataset, repito que mi experiencia con .net es de solo 1 semana.
tambien dejo el codigo de la funcion que realize en vb6 con el treeview perteneciente a los controles com, el cual no funciona por razones que desconozco, algun tipo de incopatibilidad.(directamente el treeview no funciona como deberia con .NET)
Código [Seleccionar]
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'On Error Resume Next
Dim Codigo, Descripcion As String
Dim TotalReg As Long
Dim Registro As DataRow
Dim Nombre, Hijos, Child
'Me.MousePointer = 11
tv.Nodes.Clear()
strSQL = "SELECT * FROM DimTempCustomer WHERE DimT_Padre=''"
MiAdaptador = New OleDb.OleDbDataAdapter(strSQL, MyConexion.ConnectionString)
MiAdaptador.Fill(dsDataSet, "Raiz")
Codigo = Trim(dsDataSet.Tables("Raiz").Rows(0).Item("DimT_Codigo"))
Descripcion = Trim(dsDataSet.Tables("Raiz").Rows(0).Item("DimT_Descripcion"))
tv.Nodes.Add(, , "Cabecera", "[" & Codigo & " ]" & "[" & Descripcion & "]")
'padres e hijos :)
strSQL = "SELECT * FROM DimTempCustomer WHERE DimT_Padre='" & Codigo & "'"
MiAdaptador = New OleDb.OleDbDataAdapter(strSQL, MyConexion.ConnectionString)
MiAdaptador.Fill(dsDataSet, "Primero")
TotalReg = 0
For Each Registro In dsDataSet.Tables("Primero").Rows
TotalReg = TotalReg + 1
Codigo = Trim(Registro.Item("DimT_Codigo"))
Descripcion = Trim(Registro.Item("DimT_Descripcion"))
Nombre = Codigo & "A"
Hijos = Hijos & "-//-" & Codigo
tv.Nodes.Add("Cabecera", Child, Nombre, "[" & Codigo & "]" & "[" & Descripcion & "]")
Application.DoEvents()
Next
'si no contiene hijos lo borro despues de la confirmacion
If TotalReg <> 0 Then
Verificar_hijos(Hijos)
End If
End Sub
Function Verificar_hijos(ByVal Hijos)
'On Error Resume Next
Dim i As Integer
Dim Codigo, Descripcion, Nombre, Child, Check_Hijo, Hijos2 As String
Dim Hijo
Dim TotalReg
Dim Registro As DataRow
'desgloso la variable Temp, y recorro en un bucle para ver si tienen hijos
Hijo = Split(Hijos, "-//-")
For i = 1 To UBound(Hijo)
Check_Hijo = Trim(Hijo(i))
strSQL = "SELECT * FROM DimTempCustomer WHERE DimT_Padre='" & Check_Hijo & "'"
MiAdaptador = New OleDb.OleDbDataAdapter(strSQL, MyConexion.ConnectionString)
MiAdaptador.Fill(dsDataSet, Check_Hijo)
TotalReg = 0
For Each Registro In dsDataSet.Tables("Primero").Rows
TotalReg = TotalReg + 1
Codigo = Trim(Registro.Item("DimT_Codigo"))
Descripcion = Trim(Registro.Item("DimT_Descripcion"))
Nombre = Codigo & "A"
tv.Nodes.Add(Check_Hijo + "A", Child, Nombre, "[" & Codigo & "]" & " " & Descripcion)
Hijos2 = Hijos2 & "--" & Codigo
Application.DoEvents()
Next
'si ese hijo tiene hijos
If Not TotalReg = 0 Then
Verificar_hijos(Check_Hijo)
End If
Next i
Timer1.Enabled = False
End Function
Disculpen lo extenso del post.
Saludos