Visual Basic - Error 5231 en tiepo de ejecucion

Life is soft - evento anual de software empresarial
   
Vista:

Error 5231 en tiepo de ejecucion

Publicado por Melvin (2 intervenciones) el 22/09/2011 00:31:15
Hola comunidad.

bueno mi problema consiste cuando quiero agregar un registro a una base de datos enlazada con Oracle les presento mi codigo.

primero creo un modulo que es el siguiente

Public dbConex As New Connection


Public Sub Main()
dbConex.CursorLocation = adUseServer
dbConex.Open "Provider=MSDAORA;Password=xxx;User ID=xxxx;Data Source=xxx;Persist Security Info=False"
MDIPrincipal.Show
End Sub

hasta aqui todo perfecto
ahora mi formulario para insertar y mostrar los datos de la base de datos

Dim rs As New Recordset


Private Sub Form_Load()
rs.Open "SELECT * from DIRECCION inner join sucursal on direccion.cod_dir = sucursal.cod_dir", dbConex, adOpenDynamic, adLockOptimistic
llenar
End Sub

Private Sub cmdguardar_Click()
rs.Update
deshabilitar
End Sub

Private Sub cmdnuevo_Click()
limpiar
habilitar
rs.AddNew aqui el ERROR



End Sub


Sub llenar()
TXTID = rs.Fields("COD_DIR")
txtcodigo = rs.Fields("COD_SUCURSAL")
txtnombre = rs.Fields("NOMBRE_SUCURSAL")
txtcalle = rs.Fields("CALLE")
txtavenida = rs.Fields("AVENIDA")
txtzona = rs.Fields("zona")
txtbarcol = rs.Fields("BARRIO_COLONIA")
txtmunicipio = rs.Fields("COD_MUNI")
txtdepto = rs.Fields("CODDEPARTAMENTO")
End Sub

Sub limpiar()
TXTID = ""
txtcodigo = ""
txtnombre = ""
txtcalle = ""
txtavenida = ""
txtzona = ""
txtbarcol = ""
txtcodigo = ""
txtdepto = ""
End Sub

Sub habilitar()
TXTID.Enabled = True
txtcodigo.Enabled = True
txtnombre.Enabled = True
txtcalle.Enabled = True
txtavenida.Enabled = True
txtzona.Enabled = True
txtbarcol.Enabled = True
txtcodigo.Enabled = True
txtdepto.Enabled = True
End Sub

Sub deshabilitar()

TXTID.Enabled = False
txtcodigo.Enabled = False
txtnombre.Enabled = False
txtcalle.Enabled = False
txtavenida.Enabled = False
txtzona.Enabled = False
txtbarcol.Enabled = False
txtcodigo.Enabled = False
txtdepto.Enabled = False
End Sub

he estado leendo los foros de la pagina y para algunos la respuesta es que cambien lo siguiente
adOpenDynamic a adOpenDynamic, he probado de varias maneras y siempre el error es en la misma parte.

agradeceria un comentario y una probable solucion gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error 5231 en tiepo de ejecucion

Publicado por alfonso (66 intervenciones) el 22/09/2011 10:15:09
amigo mio donde veo yo un error posible
es en el rs.update

no deberia ser cnn.execute
con una sentencia insert into para guardar los registros

te dejo un ejemplo

en el boton de guardar

'setea el rs

Set rs = New ADODB.Recordset

'en este ejemplo agrega las cajas que quires comprobar que sea necesario el ingreso de datos

If caja1.Text <> "" And caja2.Text <> "" Then

'conectar sql lo puedes reemplazar por la sentencia que usas para conectarte a la base de datos
'yo la tengo asi por que llamo la coneccion desde un modulo

conectarsql

'aqui le dices al sistema que la coneccion es igual a las cajas de texto que vas a guardar en la
'tabla donde quieres trabajar como usas oracle deberas adaptarla pero como vez no es muy dificil
'deberas agregar las cajas de texto en el mismo orden que la db

SQL = " "
SQL = "Insert into mitabla values('" & caja1.Text & "','" & caja2.Text & "')"

'aqui en el cnn.execute es el que guarda datos
cnn.Execute (SQL)
'si usa un flexm para guardar datos adicionales como productos puedes recorrerlo y guardar su 'contenido

For i = 1 To MSFlexGrid1.Rows - 1
cnn.Execute ("insert into cuerpo (FOLIO,CODIGO,DETALLE,PRECIOCOMPRA,PRECIOVENTA) values (" & "'" & MSFlexGrid1.TextMatrix(i, 0) & "','" & MSFlexGrid1.TextMatrix(i, 1) & "','" & MSFlexGrid1.TextMatrix(i, 2) & "','" & MSFlexGrid1.TextMatrix(i, 3) & "','" & MSFlexGrid1.TextMatrix(i, 4) & "','" & MSFlexGrid1.TextMatrix(i, 5) & "'')")
Next i
MsgBox "SE HA GENERADO UN INGRESO ", vbInformation, "MENSAJE"
'REFRESCA LA CONECCION O USA ADODC1.REFRESH COMO EJEMPLO SI USAS ADO
RS.Refresh
LIMPIAR
Else
MsgBox "compruebe la informacion"
End If


USALO Y ADAPTALO Y VEE LOS RESULTADOS SALUDOS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error 5231 en tiepo de ejecucion

Publicado por Melvin (2 intervenciones) el 22/09/2011 21:31:35
Gracias por Responder amigo lo adaptare a mi programa..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar