Autor Tema: Error - La Operacion no esta Permitida si el objeto esta Cerrado  (Leído 11896 veces)

0 Usuarios y 1 Visitante están viendo este tema.

omarinho23

  • Megabyte
  • ***
  • Mensajes: 105
  • Reputación: +0/-1
    • Ver Perfil
Buenos dias ante todo! soy nuevo en el foro, muchas gracias de antemano si ofrecen alguna duda sobre este error que no me marca nada en VB,

cuando trato de agregar datos a mi bd
esta es mi conex

Código: (vb) [Seleccionar]
Option Explicit
Public CNN As New ADODB.Connection
Public rs As New ADODB.Recordset
Public PRV As String, SQL1 As String
Public Conn As ADODB.Connection
Public ObjItem As ListItem
Public pun As ADODB.Connection

Function asg()
PRV = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
      App.Path & "\datos.mdb" & ";Persist Security Info=False"
End Function
Function opDB()
    If CNN.State = 0 Then
    CNN.Open PRV
    End If
End Function
Function openRS()

    If CNN.State = 1 Then
    rs.Open SQL1, CNN, adOpenStatic
    End If
End Function
Function cerrar()
    If CNN.State = 1 Then
    CNN.Close
    End If
End Function
Public Sub CargarListView(LV As ListView, rs As ADODB.Recordset)
   On Error GoTo ErrorSub
   Dim i As Integer
   If rs.RecordCount > 0 Then
    While Not rs.EOF
        Set ObjItem = LV.ListItems.Add(, , rs(0))
           ObjItem.SubItems(1) = rs!cod
           ObjItem.SubItems(2) = rs!voucher
           ObjItem.SubItems(3) = rs!cit
           ObjItem.SubItems(4) = rs!contacto
           ObjItem.SubItems(5) = rs!razonsocial
           ObjItem.SubItems(6) = rs!lista
           ObjItem.SubItems(7) = rs!dia
           ObjItem.SubItems(8) = rs!inspector
           ObjItem.SubItems(9) = rs!servicio
           ObjItem.SubItems(10) = rs!cantidad
           ObjItem.SubItems(11) = rs!precio
           ObjItem.SubItems(12) = rs!total
           ObjItem.SubItems(13) = rs!asignacion
           ObjItem.SubItems(14) = rs!bolefactu
           ObjItem.SubItems(15) = rs!observacion
           ObjItem.SubItems(16) = rs!totalvoucher
           ObjItem.SubItems(17) = rs!mes
           
        rs.MoveNext
    Wend
    End If
    Call ForeColorColumn(&H8000&, 0, FrmPrincipal.LV)
       
    Exit Sub
   
ErrorSub:
   
    If Err.Number = 94 Then Resume Next
   
End Sub
Sub Desconectar()
    On Local Error Resume Next
    rs.Close
    Set rs = Nothing
    CNN.Close
    Set CNN = Nothing
End Sub

luego trato de hacer un ingreso... pongo los datos y todo ( esto es el cod de mi frmingreso.frm, cuando le doy agregar datos )

Código: (vb) [Seleccionar]

Option Explicit

Enum EACCION
    AGREGAR_REGISTRO = 0
    EDITAR_REGISTRO = 1
End Enum

Public CodRegistro
Public ACCION As EACCION

Private Sub cmdGuardar_Click()

On Error GoTo ErrorSub
   
   
    If Trim(Text1(1)) = "" Then
        MsgBox "El voucher de registro no puede estar vacio", vbCritical, "Datos incompletos"
        Text1(1).SetFocus
        Exit Sub
   
    ElseIf Trim(CmbLista.Text) = "" Then
        MsgBox "No se ha indicado el lista", vbCritical, "Datos incompletos"
        CmbLista.SetFocus
        Exit Sub
       
    ElseIf Trim(Text1(4)) = "" Then
        MsgBox "No se ha indicado el lista", vbCritical, "Datos incompletos"
        Text1(4).SetFocus
        Exit Sub
   
    ElseIf Trim(Text1(3)) = "" Then
        MsgBox "No se ha indicado el lista", vbCritical, "Datos incompletos"
        Text1(3).SetFocus
        Exit Sub
       
    ElseIf Trim(CmbLista.Text) = "" Then
        MsgBox "No se ha indicado el lista", vbCritical, "Datos incompletos"
        CmbLista.SetFocus
        Exit Sub
       
    ElseIf Trim(Text1(13)) = "" Then
        MsgBox "No se ha indicado el lista", vbCritical, "Datos incompletos"
        Text1(13).SetFocus
        Exit Sub

    End If

    Select Case ACCION
    Case EDITAR_REGISTRO
        CNN.Execute "UPDATE personas set voucher = '" & Text1(1) & _
                                         "', contacto = '" & Text1(3) & _
                                         "', RazonSocial = '" & Text1(4) & _
                                         "', servicio = '" & Text1(6) & _
                                         "', cantidad = '" & Text1(7) & _
                                         "', precio = '" & Text1(8) & _
                                         "', total = '" & Text1(9) & _
                                         "', asignacion = '" & Text1(10) & _
                                         "', observacion = '" & Text1(12) & _
                                         "', totalvoucher = '" & Text1(13) & _
                                         "', mes = '" & CmbMes.ListIndex & _
                                         "', boletafactura = '" & CmbBoleFactu.ListIndex & _
                                         "', inspector = '" & CmbInspector.ListIndex & _
                                         "', cit = '" & CmbCit.ListIndex & _
                                         "', lista = '" & CmbLista.ListIndex & _
                                         "' where ID = " & CodRegistro & "" _


    Case AGREGAR_REGISTRO
       
        CNN.Execute "INSERT INTO personas " & "(voucher,cit,contacto,RazonSocial,lista,dia,inspector,servicio,cantidad,precio,total,asignacion,boletafactura,observacion,totalvoucher,mes) VALUES('" & _
                                 Text1(1) & "','" & _
                                 Text1(3) & "','" & _
                                 Text1(4) & "','" & _
                                 Text1(6) & "','" & _
                                 Text1(7) & "','" & _
                                 Text1(8) & "','" & _
                                 Text1(9) & "','" & _
                                 Text1(10) & "','" & _
                                 Text1(12) & "','" & _
                                 Text1(13) & "','" & _
                                 CmbMes.ListIndex & "','" & _
                                 CmbInspector.ListIndex & "','" & _
                                 CmbCit.ListIndex & "','" & _
                                 CmbLista.ListIndex & "','" & _
                                 CmbBoleFactu.ListIndex & "','" & _
                                 Format(Date, "dd/mm/yyyy") & "')" _


    End Select
    rs.Open "select*from personas"
    rs.Requery
   
    Call CargarListView(FrmPrincipal.LV, rs)

    DoEvents
    Unload Me
    Set frmEdit = Nothing
Exit Sub
ErrorSub:
MsgBox Err.Description

End Sub

Private Sub cmdCancelar_Click()
    Unload Me
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyEscape Then
       Unload Me
    End If
End Sub


y me sale el error y no me señala el error, no se si sera sobre la base de datos en access o en VB, si alguien me pudiera dar una ayuda, muchas gracias! saludos!

« última modificación: Febrero 21, 2011, 12:49:26 am por xkiz ™ »

wolf_kof

  • Visitante
Re:Error - La Operacion no esta Permitida si el objeto esta Cerrado
« Respuesta #1 en: Diciembre 19, 2009, 03:32:27 pm »
MIRA TE ESTAS COMPLICANDO MUCHO LA VIDA

LO QUE TIENES QUE HACER ES LO SIGUIENTE

LA HERRAMIENTA QUE TIENE LAS FLECHAS Y DICE EN LA PARTE EN BLANCO ADODC1  ES UN CONTROL ADO QUE HACE LO QUE TU ESTAS HACIENDO SIN NECESIDAD DE MODULOS Y SIN NECESIDAD DE CODIGO

TIENES QUE DARLE CLIC DERECHO Y DARLE PROPIEDADDES DE ADOO Y ESCOJER TU PROVEEDOR Y PONER LA DIRECCIÓN DE TU BASE DE DATOS DARLE CLIC EN DONDE DICE PROBAR CONEXIÓN PARA SABER QUE TODO ESTA EN ORDEN Y ESCOJER UNA FORMA DE CONEXIÓN A TABLAS SI ES POR MEDIO DE TABLA O SQL

SI ESCOJES TABLAS TE APARECERA UN COMBOBOX EN EL CUAL TE APARECERAN TODAS LAS TABLAS DE TU BASE DE DATOS Y SI TE DICE QUE EL PROVEEDOR NO ADMITE LOS RECORSET ES QUE TIENES QUE HACERLO SQL

AHORA SI ESCOJES SQL

TIENES QUE HACERLO DE LA SIGUIENTE FORMA

SELECT * FROM CLIENTES

O CONDICIONAR TU ESTRUCTURA SQL COMO QUIERES

SELECT NOMBRE, DIRECCIÓN, CLAVE FROM CLIENTES WHERE CLAVE = '" & TEXT1.TEXT & "' ORDER BY NOMBRE

PERO ESA INSTRUCCION QUE TE ESTOY DANDO ES UN FILTRADO Y ORDENADO QUE PUDIERA RESOLVER AL MOMENTO DE TENER EN CUENTA UNA FORMULARIO

CUANDO AGREGAR UN TEXTBOX APARACEN DOS CAMPOS EN PROPIEDADES DEL TEXTBOX

EL RECORDSOURSE ES EL ADODC1 O LA CONEXIÓN A BASE DE DATOS

Y EL DATAFIEL ES EL CAMPO DE LA BASE DE DATOS QUE ESTAS ENLACANDO

CUANDO LE QUIERES DAR AGREGAR UN REGISTRO PRIMERO TIENES QUE HACER UN REGISTRO NUEVO


ADODC1.RECORDSET.ADDNEW

Y DESPUES GUARDARLO

YO LO HAGO DE LA SIGUIENTE MANERA

ADODC1.RECORDSET.UPDATE
ADODC1.RECORDSET.SAVE

Y PARA ELIMINAR ES

ADODC1.RECORDSET.DELETE

PARA FILTRAR DATOS ES

ADODC1.RECORDSET.FILTER =  "CLAVE = '" & TEXT1.TEXT & "'"

ESPERO QUE TE SIRVA

« última modificación: Diciembre 20, 2009, 12:02:34 am por wolf_kof »

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Error - La Operacion no esta Permitida si el objeto esta Cerrado
« Respuesta #2 en: Diciembre 19, 2009, 07:17:55 pm »
Hola, estas seguro de que ya abriste la conexion?, tambieno fijate si por las dudas al descargar un formulario no estas cerrando la conexion.

cualquier cosa fijate si podes pasar parte de tu proyecto con la BD para ver mejor donde esta el problema.

Saludos.

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Error - La Operacion no esta Permitida si el objeto esta Cerrado
« Respuesta #3 en: Diciembre 19, 2009, 10:33:16 pm »
Hola, pues es simple, estas tratando de usar un recordset que esta cerrado.ese codigo o conozco de algun lado, sera de recursosvisualbasic ?? para saber donde esta el error sacale los On Error y te va a saltar la linea...

saludos.

omarinho23

  • Megabyte
  • ***
  • Mensajes: 105
  • Reputación: +0/-1
    • Ver Perfil
Re:Error - La Operacion no esta Permitida si el objeto esta Cerrado
« Respuesta #4 en: Diciembre 28, 2009, 12:13:39 pm »
MUCHAS GRACIAS POR EL DATO.! ME FUNCIONO!  ;D