Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: omarinho23 en Diciembre 19, 2009, 01:01:49 pm
-
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
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 )
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!
-
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
-
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.
-
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.
-
MUCHAS GRACIAS POR EL DATO.! ME FUNCIONO! ;D