elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Timer detiene depuración para agregar datos a bd
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Timer detiene depuración para agregar datos a bd  (Leído 3,395 veces)
CAEL20

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Timer detiene depuración para agregar datos a bd
« en: 24 Enero 2018, 23:47 pm »

Buen dia estoy desarrollando un ejercicio el cual es de buscar extensiones y agregarlas a un ListBox, de ahí programo un timer para que seleccione dato por dato de la lista y la agregue a una base de datos, tengo el problema que agregar unos cuantos y en cierto momento se detiene la depuración marcando error en la linea para agregar datos a la base de datos, les dejo mi ejercicio espero me puedan ayudar.

Código
  1. Imports System.IO
  2. Public Class Form1
  3.  
  4.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  5.        Dim ExtensionBuscada As String = "*.txt"
  6.        Dim dirInfo As New DirectoryInfo(TextBox1.Text)
  7.        Dim dirsInfo() As DirectoryInfo = dirInfo.GetDirectories("*.*", SearchOption.TopDirectoryOnly)
  8.  
  9.        For Each di As DirectoryInfo In dirsInfo
  10.            Try
  11.                Dim filesInfo() As FileInfo = di.GetFiles(ExtensionBuscada, SearchOption.AllDirectories)
  12.                For Each fichero As FileInfo In filesInfo
  13.                    ListBox1.Items.Add(fichero.FullName)
  14.                    Label6.Text = ListBox1.Items.Count
  15.                Next
  16.  
  17.            Catch ex As UnauthorizedAccessException
  18.                ' Controlo el error de acceso no autorizado a carpeta
  19.  
  20.            End Try
  21.        Next
  22.    End Sub
  23.  
  24.    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  25.        Timer1.Start()
  26.    End Sub
  27.  
  28.    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  29.        Me.ListBox1.SelectedIndex = 0
  30.        Button2_Click(sender, e)
  31.    End Sub
  32.  
  33.    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  34.  
  35.        If ListBox1.Items.Count > 0 Then
  36.            Label6.Text = ListBox1.Items.Count
  37.            Me.ListBox1.SelectedIndex = 0
  38.            Label1.Text = ListBox1.SelectedItem.ToString
  39.  
  40.            Label7.Text = Val(Label7.Text) + Val("1")
  41.            Me.DATOSTableAdapter.Insert(Label7.Text, Label1.Text, Label3.Text, Label4.Text, Label5.Text) 'INSERTAR NUEVO DATOS
  42.  
  43.            ListBox1.Items.Remove(ListBox1.SelectedItem)
  44.  
  45.  
  46.  
  47.        Else
  48.            Label6.Text = ListBox1.Items.Count
  49.            Me.DATOSTableAdapter.Fill(Me.CAPTURADataSet.DATOS)
  50.            Timer1.Stop()
  51.  
  52.        End If
  53.  
  54.    Private Sub DATOSBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DATOSBindingNavigatorSaveItem.Click
  55.        Me.Validate()
  56.        Me.DATOSBindingSource.EndEdit()
  57.        Me.TableAdapterManager.UpdateAll(Me.CAPTURADataSet)
  58.  
  59.    End Sub
  60.  
  61.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  62.        'TODO: esta línea de código carga datos en la tabla 'CAPTURADataSet.DATOS' Puede moverla o quitarla según sea necesario.
  63.        Me.DATOSTableAdapter.Fill(Me.CAPTURADataSet.DATOS)
  64.  
  65.    End Sub
  66.  
  67.  
  68. End Class




Si funciona, agrega bien pero en cierto tiempo de que agrego algunos detiene la depuración marca error en la linea de agregar a la bd.


Código
  1. Me.DATOSTableAdapter.Insert(Label7.Text, Label1.Text, Label3.Text, Label4.Text, Label5.Text) 'INSERTAR NUEVO DATOS



En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: Timer detiene depuración para agregar datos a bd
« Respuesta #1 en: 25 Enero 2018, 03:07 am »

No lo pones fácil. Básicamente quieres que adivinemos que error te sucede al introducir unos datos que desconocemos de una carpeta que desconocemos, de unos ficheros que desconocemos, en una base de datos que desconocemos.

Viendo los 'labels', que contienen los supuestos datos a ingresar en la supuesta línea que te falla, (así a ciegas) yo apuntaría que:
1 - El contenido de un label está vacío y la base de datos para ese campo está marcado como 'not null or empty', vamos que no admite una cadena de texto vacía...
2 - O lo contrario, que un campo esté limitado a un máximo de caracteres y esté recibiendo más, aunque en tal caso debiera truncarlo.
3 - Que el campo estuviera reclamando un tipo de datos (por ejemplo numérico), y que hasta el momento el label contenía un dato que puede ser interpretado como numérico, pero más adelante no.

Apostaría por el caso 1, mucho menos por el 2 y remotamente improbable por el 3...

Y ahora pregunto yo. ¿Tanto cuesta poner el error que marca el stacktrace????.
¿Quieres respuestas razonables o apuestas adivinas?...


En línea

CAEL20

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Timer detiene depuración para agregar datos a bd
« Respuesta #2 en: 25 Enero 2018, 07:38 am »

Si solo quiero guardar las direcciones de archivos que el boton Button1 busca, de ahi el timer es de guardar las direcciones que encontró el buscador y enlisto el label 7 es como el ID y el label 1 la ruta ejemplo D:\carpeta\archivo.txt los demas label son label que lleno con otro contenido, todo va bien y se ejecuta bien pero llega el momento que se detiene la depuración.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Timer detiene depuración para agregar datos a bd
« Respuesta #3 en: 25 Enero 2018, 19:04 pm »

marca error en la linea de agregar a la bd.

Código
  1. Me.DATOSTableAdapter.Insert(Label7.Text, Label1.Text, Label3.Text, Label4.Text, Label5.Text) 'INSERTAR NUEVO DATOS

No somos adivinos, ¿cual es el tipo de la excepción, y el mensaje exacto del error?.

Saludos.
En línea

CAEL20

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Timer detiene depuración para agregar datos a bd
« Respuesta #4 en: 25 Enero 2018, 20:09 pm »

es asi como me marca
https://drive.google.com/open?id=115_2doDcsiaNTlyjSp3idZBwzwNBHXpS
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: Timer detiene depuración para agregar datos a bd
« Respuesta #5 en: 25 Enero 2018, 22:35 pm »

Si solo quiero guardar las direcciones de archivos que el boton Button1 busca, de ahi el timer es de guardar las direcciones que encontró el buscador y enlisto el label 7 es como el ID y el label 1 la ruta ejemplo D:\carpeta\archivo.txt los demas label son label que lleno con otro contenido, todo va bien y se ejecuta bien pero llega el momento que se detiene la depuración.

Bien, pero tenemos que seguir jugando a adivinar qué pasa, insisto:
... ¿Tanto cuesta poner el error que marca el stacktrace????...
Ya te decía, que sin más detalles no se puede saber que está pasando. Por imaginar, sin detalles lo úniico aventurado señalar es que los datos estén fuera de rango... una cadena vacía donde se espera contenido, un valor numérico dentro de unos límites (si es un byte, que no reciba un entero, etc... incluso si el valor no está acotado en el campo: >20 y < 150 por ejemplo, si el campo está así definido y un valor fuera dle rango, genera un error.

¿Puedes añadir líneas de código de depurración, para controlar las variables implicadas, y ver si tienen el valor que debieran tener?. Depurar es eso... verificar que cada variable contiene el valor que correponde al estado actual y si para ello hay que añadir líneas de control se añaden hasta capturar el error.

¿Por qué no añades un mísero Try...catch (en la línea que dices que falla)? y devuelves la excepción resultante.

Es que no pones ni lo mínimo, que sería el contenido de cada uno de esos labels en el momento del fallo... ...en fín tu pretendes que adivinemos donde tienes un error sin más.


Voy a tomarme la molestia de revisar tu código, a pesar de que es algo a evitar cuando uno no hace lo correcto, dar detalles...

Selecciono el siguiente fragmento de código  (del timer) y me centro sólo en él:
(por cierto, la función de evento del timer, no tiene su correspondiente 'end sub', asumo que sólo es un problema de copy-paste en el foro).

Bien, como tú dices que funciona durante un momento y luego falla, y observo que vas borrando ítems de un listbox, después de insertar los datos, aunque quede vacío, lo controlas antes, luego ahí no hay error...
Solo veo que 'label1' contiene el contenido actual del primer ítem del listbox
Y que el label7, lleva una cuenta (una cuenta fea de llevar, convertir a número y luego a texto, etc.. ese label sería mejor estar soportado en una función o propiedad, como sigue:
Código
  1. private p_cuenta as int32
  2. private function SumaCuenta as string
  3.    p_Cuenta +=1
  4.    return  p_Cuenta.toString
  5. end function

Luego haría falta una línea adicional para controlar la situación... modifica como señalo...

Código
  1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  2.        Dim k As Int32
  3.  
  4.        k = listbox1.items.Count
  5.        If (k > 0) Then
  6.            label6.text = k.ToString
  7.            Label1.Text = ListBox1.Items.Item(0)
  8.  
  9.            label7.text = SumaCuenta
  10.  
  11.            Try
  12.  
  13.                DatosTableAdapter.Insert(Label7.Text, Label1.Text, Label3.Text, Label4.Text, Label5.Text)
  14.                ListBox1.Items.Remove(0)
  15.            Catch ex As Exception
  16.                MessageBox.Show(ex.StackTrace) ' mínimo ex.message
  17.            End Try
  18.        Else
  19.            '...
  20.        End If
  21.    End Sub

Luego ejecuta (paso a paso al llegar al evento del timer) y cuando salte el error, copia el texto del mensaje que salga y pégalo por aquí, a ver si se aclara algo...

Mejor opción es que hagas copia del proyecto, elimina lo que no sea necesario o no te parezca prudente revelar (pero que pueda ejecutarse hasta ahí), y a ver si se puede hacer algo más que adivinar...


Bien acabo de ver el mensaje último (éste lo tenía editado y me tuive que marchar y ahora al volver lo he enviado).
La imagen es clara, como se asume, una conversión de tipos forzada.... tu usas labels que son strings, y alguno de ellas se espera un tipo de datos de otro tipo, que no puede ser convertido, implícitamente, debe hacerse su 'cast' preciso.
...pero ves que en la misma imagen te pone: 'copiar detalles al portapapeles'?... pués eso es lo que hay que hacer y pegar aquí, junto con el código (solo hiciste esta última parte).
Si pones el cursosr sobre el 'guioncito rojo' (al final dle texto), y pinchas en él, te sugiere cambios, tal que si sabes lo que estás haciendo sabrás si en efecto, "vaya se me pasó", o dirás. "Ni P... idea"... si no lo resuelves pon el stacktrace entero...
« Última modificación: 25 Enero 2018, 22:43 pm por NEBIRE » En línea

CAEL20

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Timer detiene depuración para agregar datos a bd
« Respuesta #6 en: 25 Enero 2018, 23:15 pm »

Gracias por la molestia la verdad no se mucho y menos de sql, este codigo lo aprendi de youtube, vi que el error es por recolectar rutas que superan el MaxLegth le he cambiado y algunas me carga en el DataGridView con signo de rojo por superar el limite, pero si logra llegar al fin de recolección.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PHP ayuda agregar datos
PHP
xtreme-shumy 2 1,898 Último mensaje 16 Octubre 2006, 20:47 pm
por xtreme-shumy
Redireccionar y agregar datos!!
Programación Visual Basic
Hole_System 0 1,119 Último mensaje 19 Junio 2008, 05:49 am
por Hole_System
Visual Basic 6.0 , timer y base de datos mysql « 1 2 »
Programación Visual Basic
el_mago999 12 8,034 Último mensaje 6 Septiembre 2008, 18:24 pm
por el_mago999
Ayuda! ¿Como le hago para agregar datos a un archivo de acceso aleatorio?
Java
Isatol 0 1,706 Último mensaje 21 Abril 2013, 02:42 am
por Isatol
Microsoft lanza herramienta de depuración de juegos para Windows
Noticias
wolfbcn 0 1,236 Último mensaje 19 Enero 2017, 01:35 am
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines