Discussion:
Error 3001
(demasiado antiguo para responder)
David
2004-11-14 21:13:40 UTC
Permalink
Tengo un formulario donde al hacer el load me abre una base de datos de
oracle, ejecuto la sql, y muestro los resultados q me da esta en un combo,
entonces cierro la conexion del recorset y limpio la variable rs con el
nothing. El problema me viene en el click del combo q quiero tb hacer lo
mismo q antes declarar la variable rs como recordset y ejecutar una sql pero
me da este error:
" error 3001 en tiempo de ejecucion argumentos incorrectos, fuera del
intervalo o en conficto con otros "
si alguien sabe porq puede ser debido q kizas haga algo mal y me pueda
ayudar se lo agaradeceria.
David
2004-11-15 08:20:07 UTC
Permalink
Este es el código:

Private Sub Form_Load()

Set cnDis = New ADODB.Connection
cnDis.ConnectionString = "DSN=miDSN;UID=user;PWD=pass;SERVER=miserver;"
cnDis.Open

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "Select ACTA from ACTPEND where CLIENTE='" & numcliente & "'",
cnDis, adOpenKeyset, adLockOptimistic
ListActa.Clear

'Generammos la lista de las actas

While Not rs.EOF
ListActa.AddItem rs("ACTA")
rs.MoveNext
Wend

'cerramos la conexión
rs.Close
Set rs = Nothing

End Sub

Private Sub ComOK_Click()

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "INSERT INTO DIF_CONTROLFICHEROS values ('" & numcliente & "','" &
ListActa.Text & "','0'", cnDis,
adOpenKeyset, adLockOptimistic ' El error 3001 me lo devuelve aqui.
rs.close
Set rs=Nothing
End Sub
Alex Martínez
2004-11-15 08:29:52 UTC
Permalink
Post by David
Private Sub Form_Load()
Set cnDis = New ADODB.Connection
cnDis.ConnectionString =
"DSN=miDSN;UID=user;PWD=pass;SERVER=miserver;" cnDis.Open
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "Select ACTA from ACTPEND where CLIENTE='" & numcliente & "'",
cnDis, adOpenKeyset, adLockOptimistic
ListActa.Clear
'Generammos la lista de las actas
While Not rs.EOF
ListActa.AddItem rs("ACTA")
rs.MoveNext
Wend
'cerramos la conexión
rs.Close
Set rs = Nothing
End Sub
Private Sub ComOK_Click()
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "INSERT INTO DIF_CONTROLFICHEROS values ('" & numcliente &
"','" & ListActa.Text & "','0'", cnDis,
adOpenKeyset, adLockOptimistic ' El error 3001 me lo devuelve aqui.
rs.close
Set rs=Nothing
End Sub
Prueba con:

Private Sub ComOK_Click()

cnDis.Execute "INSERT INTO DIF_CONTROLFICHEROS values ('" & numcliente &
"','" & ListActa.Text & "','0')"

End Sub
--
Saludos,
Alex
[MS-MVP Visual Basic]
Morgan
2004-11-15 08:32:49 UTC
Permalink
No te falta un parentesis?

rs.Open "INSERT INTO DIF_CONTROLFICHEROS values ('" & numcliente & "','" &
ListActa.Text & "','0'"), cnDis, adOpenKeyset, adLockOptimistic

Otra, esos son todos los campos?, estas pasando puros string, asi estan
declaradas en la tabla?

Nota:

Cuando no se indica ninguna lista de columnas después del destino, se asume
por defecto todas las columnas de la tabla, en este caso, los valores se
tienen que especificar en el mismo orden en que aparecen las columnas en la
ventana de diseño de dicha tabla, y se tiene que utilizar el valor NULL para
rellenar las columnas de las cuales no tenemos valores.

--
Saludos ... Miguel Angel Martínez Morgan ... 8-)
[ MS - MVP - Visual Basic ] [ Cancún, Quintana Roo, México ]
[ Todas las preguntas al foro, así nos beneficiamos todos ]

DISCLAIMER: «Este mensaje se proporciona "como está" sin garantías de
ninguna indole, y no otorga ningún derecho.»
Post by David
Private Sub Form_Load()
Set cnDis = New ADODB.Connection
cnDis.ConnectionString =
"DSN=miDSN;UID=user;PWD=pass;SERVER=miserver;" cnDis.Open
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "Select ACTA from ACTPEND where CLIENTE='" & numcliente &
"'", cnDis, adOpenKeyset, adLockOptimistic
ListActa.Clear
'Generammos la lista de las actas
While Not rs.EOF
ListActa.AddItem rs("ACTA")
rs.MoveNext
Wend
'cerramos la conexión
rs.Close
Set rs = Nothing
End Sub
Private Sub ComOK_Click()
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "INSERT INTO DIF_CONTROLFICHEROS values ('" & numcliente &
"','" & ListActa.Text & "','0'", cnDis,
adOpenKeyset, adLockOptimistic ' El error 3001 me lo devuelve aqui.
rs.close
Set rs=Nothing
End Sub
Alex Martínez
2004-11-15 08:38:08 UTC
Permalink
Post by David
Private Sub Form_Load()
Set cnDis = New ADODB.Connection
cnDis.ConnectionString =
"DSN=miDSN;UID=user;PWD=pass;SERVER=miserver;" cnDis.Open
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "Select ACTA from ACTPEND where CLIENTE='" & numcliente & "'",
cnDis, adOpenKeyset, adLockOptimistic
ListActa.Clear
'Generammos la lista de las actas
While Not rs.EOF
ListActa.AddItem rs("ACTA")
rs.MoveNext
Wend
'cerramos la conexión
rs.Close
Set rs = Nothing
End Sub
Private Sub ComOK_Click()
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "INSERT INTO DIF_CONTROLFICHEROS values ('" & numcliente &
"','" & ListActa.Text & "','0'", cnDis,
adOpenKeyset, adLockOptimistic ' El error 3001 me lo devuelve aqui.
rs.close
Set rs=Nothing
End Sub
Por cierto, ¿de qué tipo es cada uno de los campos?.
Piensa que los valores para los campos numéricos no van entre comillas.
También te aconsejo que incluyas los nombres de los campos en la sentencia.
Es decir:
INSERT INTO NombreTabla (NombreCampo1, NombreCampo2) VALUES (Valor1, Valor2)
--
Saludos,
Alex
[MS-MVP Visual Basic]
David
2004-11-15 08:50:40 UTC
Permalink
Ya lo tengo arreglado, fue un pequeño despiste. gracias

Loading...