Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Programa se cuelga

Estas en el tema de Programa se cuelga en el foro de Visual Basic clásico en Foros del Web. Hola compañeros ojala y mi problema tenga solución, relice un programa que se conecta mediante DSN a una base de datos que esta en un ...
  #1 (permalink)  
Antiguo 16/06/2009, 17:26
 
Fecha de Ingreso: septiembre-2008
Mensajes: 152
Antigüedad: 15 años, 7 meses
Puntos: 1
Exclamación Programa se cuelga

Hola compañeros ojala y mi problema tenga solución, relice un programa que se conecta mediante DSN a una base de datos que esta en un servidor Local y aparte se conecta por codigo a una base de datos ubicada en la PC donde trabaja el programa, este programa reliza la tarea de agregar los datos contenidos en la tabla del servidor Local a una tabla contenida en la base de datos que esta en la maquina donde esta trabajando el software, el programa realiza bien su función, pero el problema es que mientras lo estoy ejecutando no puedo hacer nada en la computadora ya que si intento hacer algo el programa se traba y tengo que reiniciarlo, mi pregunta es existe alguna manera de evitar que se trabe el programa.

Por favor les pido ayuda la verdad es que he intentado de todo y nada me ha ayudado , de antemano muchas GRACIAS

aqui le dejo el codigo que estoy utlizando, abe mencionar que lo desarrolle en Visual Basic 6.0 y las conexiones a las bases de datos son mediante ADODC y la informacion la muestro en datagrids.

Código:
Private Sub Command1_Click()
    C2.Filter = "Base de Datos Microsoft Access | *.mdb"
    C2.ShowOpen
    Text4.Text = C2.FileName
End Sub

Private Sub Command2_Click()
Dim Connectionstring As String
If Text4.Text = "" Or Text4.Text = "Selecciona una base de datos de Microsoft Access" Then
MsgBox "Seleccione una base de datos válida", vbExclamation, "IMPORTANTE !!!"
Else
Connectionstring = "Driver={Microsoft Access Driver (*.mdb)};" & _
   "Dbq=" & Text4.Text & ";" & "Uid=;Pwd="
   
With ado1
    .RecordSource = "Select * from consultas_internet"
    .Connectionstring = Connectionstring
    .Refresh
    .Visible = False
End With

Set DataGrid1.DataSource = ado1
ado1.Recordset.MoveFirst
DoEvents
Command3.Enabled = True
End If

End Sub

Private Sub Command3_Click()
Adodc1.Recordset.MoveFirst
Adodc2.Recordset.MoveFirst
ado1.Recordset.MoveFirst

If Not Adodc1.Recordset.BOF Then
    Adodc1.Recordset.MoveFirst
End If
If Not Adodc2.Recordset.BOF Then
    Adodc2.Recordset.MoveFirst
End If
If Not ado1.Recordset.BOF Then
    ado1.Recordset.MoveFirst
End If

barra.Value = 0
barra.Max = Adodc1.Recordset.RecordCount
X = barra.Max / Adodc1.Recordset.RecordCount

'EXAMINA LA TABLA

While Not Adodc1.Recordset.EOF
    csql = "correo= '" & Adodc1.Recordset!correoel & "'"
    csql2 = "estado= '" & Adodc1.Recordset!estado & "'"
    Adodc2.Recordset.Find csql2
    ado1.Recordset.Find csql
    
    
    If Adodc1.Recordset!correoel <> "" Then
        If ado1.Recordset.EOF Then
            ado1.Recordset.AddNew
            ado1.Recordset!nombres = Adodc1.Recordset!nombres
            ado1.Recordset!apaterno = Adodc1.Recordset!apepat
            ado1.Recordset!amaterno = Adodc1.Recordset!apemat
            ado1.Recordset!delegacion = Adodc1.Recordset!pobdelmun
            
            If Adodc2.Recordset!estado > 0 And Adodc2.Recordset!estado < 33 Then
                ado1.Recordset!estado = Adodc2.Recordset!descripcion
            Else
                ado1.Recordset!estado = ""
            End If
            
            ado1.Recordset!pais = "México"
            ado1.Recordset!reparacion_pc = "SI"
            ado1.Recordset!mecanica = "SI"
            ado1.Recordset!mecatronica = "SI"
            ado1.Recordset!electronica = "SI"
            ado1.Recordset!estatus = "A"
            ado1.Recordset!modulo = "SP"
            ado1.Recordset!correo = Adodc1.Recordset!correoel
        Else
            If ado1.Recordset!nombres <> Adodc1.Recordset!nombres Then
                ado1.Recordset!nombres = Adodc1.Recordset!nombres
                ado1.Recordset.Update
            End If
            If ado1.Recordset!apaterno <> Adodc1.Recordset!apepat Then
                ado1.Recordset!apaterno = Adodc1.Recordset!apepat
                ado1.Recordset.Update
            End If
            If ado1.Recordset!amaterno <> Adodc1.Recordset!apemat Then
                ado1.Recordset!amaterno = Adodc1.Recordset!apemat
                ado1.Recordset.Update
            End If
            If ado1.Recordset!delegacion <> Adodc1.Recordset!pobdelmun Then
                ado1.Recordset!delegacion = Adodc1.Recordset!pobdelmun
                ado1.Recordset.Update
            End If
            If ado1.Recordset!estado <> Adodc2.Recordset!descripcion Then
                If Adodc2.Recordset!estado > 0 And Adodc2.Recordset!estado < 33 Then
                    ado1.Recordset!estado = Adodc2.Recordset!descripcion
                Else
                    ado1.Recordset!estado = ""
                End If
                ado1.Recordset.Update
            End If
            If ado1.Recordset!pais <> "México" Then
                ado1.Recordset!pais = "México"
                ado1.Recordset.Update
            End If
            If ado1.Recordset!reparacion_pc <> "SI" Then
                ado1.Recordset!reparacion_pc = "SI"
                ado1.Recordset.Update
            End If
            If ado1.Recordset!mecanica <> "SI" Then
                ado1.Recordset!mecanica = "SI"
                ado1.Recordset.Update
            End If
            If ado1.Recordset!mecatronica <> "SI" Then
                ado1.Recordset!mecatronica = "SI"
                ado1.Recordset.Update
            End If
            If ado1.Recordset!electronica <> "SI" Then
                ado1.Recordset!electronica = "SI"
                ado1.Recordset.Update
            End If
            If ado1.Recordset!estatus <> "A" Then
                ado1.Recordset!estatus = "A"
                ado1.Recordset.Update
            End If
            If ado1.Recordset!modulo <> "S" Then
                ado1.Recordset!modulo = "S"
                ado1.Recordset.Update
            End If
            If ado1.Recordset!correo <> Adodc1.Recordset!correoel Then
                ado1.Recordset!correo = Adodc1.Recordset!correoel
                ado1.Recordset.Update
            End If
        
        End If
            
        
    End If
    Adodc1.Recordset.MoveNext
    ado1.Recordset.MoveFirst
    Adodc2.Recordset.MoveFirst
    barra.Value = barra.Value + X
Wend
End Sub
  #2 (permalink)  
Antiguo 30/06/2009, 01:38
 
Fecha de Ingreso: junio-2009
Ubicación: Sevilla
Mensajes: 5
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Programa se cuelga

Puedes meter algún "DoEvents" dentro del bucle para que no se apropie de la CPU.

Saludos
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 00:14.