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?
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"