Problemas con UPDATE y DBCombo

A ver si me pueden ayudar,
Tengo un recordset que hace de filtro a una base de datos, la llamo DataAlbaranes.
Un DBCombo con unos valores.
Quiero que se actualice la base de datos con el valos seleccionado en el dbCombo así:
DataAlbaranes.RecordSource = "UPDATE [Albaranes] SET Entidad = DBCombo1.text WHERE [Inddocumento] = 'IddocAPagar'"
DataAlbaranes.Refresh
Y me da el error '3219', Operación no válida.
¿Qué estoy haciendo mal?
Respuesta
D
Pero diría yo que mejor lo hagas pro separado así
Te ocasionara problemas.
Con Sql es más fácil
Hola,
¿A qué te refieres de hacerlo por separado?
Aún poniendo el DataAlbaranes. Recordset me da el siguiente error 'Uso no válido de la propiedad'.
¿De que manera puedo actualizar datos concretos de un campo.
Es decir actualizar a aquellos que cimplan una condición.
Tampoco estoy muy convencido de la expresión Entidad = DBCombo1.text dentrto del UPDATE. ¿No tendría que hacer antes? Lo de Area=dbcArealist para asegurar que el dato seecionado es que me va a al Campo Entidad.
Bueno te voy a pasar un Modulo que es Personalizado, es decir que es de mi autoría:
Para la Conexión, Create un modulo con nombre Procesos dentro de ello en General Declaraciones poner Dim Con as Adodb. Connection,
Es importante que hagas la referencia al Objeto Recordset Microsoft Activex 2.8 Library, bueno después de hacer todo ello, escribir: OJO CONEXIÓN A SQL
Public Sub Conectar()
Dim X As Object
Set Cn = New ADODB.Connection
With Cn
.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sA;pWD=DEMOLEDOR;Initial Catalog=Mutual_10Noviembre"
.Open
End With
End Sub
AHORA PARA LOS DATA COMBOS ESTE SUB :
Public Sub DataCombos(DCombo As DataCombo, Store As String, Descripcion As String, Codigo As String)
On Error GoTo Mal
Dim Comando As ADODB.Command
Set Comando = New ADODB.Command
Conectar
Comando.ActiveConnection = Cn
Comando.CommandType = adCmdStoredProc
Comando.CommandText = Store
Set Rs_DataCombo = New ADODB.Recordset
Set Rs_DataCombo = Comando.Execute
Rs_DataCombo.Close
Rs_DataCombo.CursorLocation = adUseClient
Rs_DataCombo.Open
Set DCombo.RowSource = Rs_DataCombo.DataSource
DCombo.ListField = Descripcion
DCombo.BoundColumn = Codigo
DCombo.Refresh
Mal:
Select Case ERR.Number
Case -2147467259
MsgBox "Error al conectarse " & vbCrLf & _
"Con el Servidor . . . " & vbCrLf & _
"Consulte con el Administrador", 0 + 0, "Nombre del Empresa"
End Select
End Sub
Ahora para el Formulario en cuestión debes llamarlo de esta manera
DataCombos (eldatacombo, "aquí el StoreProcedure", "el listado que saldrá el datacombo", "ElCodigo del DataCombo")
Aqui una funcion para guardar Registros
Public Function GuardarRegistros(xText As Object, RsMandarBD As ADODB.Recordset, Campo As Integer)
If xText.Text <> "" Then
RsMandarBD(Campo) = xText.Text
Else
RsMandarBD(Campo) = Null
End If
End Function
De esta manera lo llamas al formulario
GuardarRegistros txtejemplo1, rsejemplo, 11
GuardarRegistros dcAlbaran.text, rsEjemplo, 12
rsEjemplo.Update
Ahora para enlazarme a un tabla lo siguiente

Sub AccesoTabla(Rs As ADODB.Recordset, Tabla As String)
Conectar
Set Rs = New ADODB.Recordset
With Rs
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Open Tabla, Cn
End With
End Sub
Ahora como se llama del Formulario, recuerda que debes crear la variable rsEjemplo en General Declaraciones
Dim RsEjemplo as Adodb.Recordset 
Accesotabla RsEjemplo,"Nombre del Tabla"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas