Addnew no disponible desde fuera del Form
Publicado por oskita (2 intervenciones) el 02/06/2021 20:34:42
Hola a todos, me está sucediendo una cosa muy extraña.
Tengo un form de facturación con su encabezado y detalle donde se van añadiendo los productos a facturar.
Estos se añaden des otro subformulario dentro de este mismo de facturación, en donde estan fitrados por familias de productos y haciendo doble clic sobre ellos se insertan en el subform de detalle con un:
DoCmd.GoToRecord , , acNewRec. y pasandole con el ID como referencia realiza una búsqueda por ADO en la tabla y lo inserta
Hasta ahí todo bién, el problema viene ahora que he implementado en el subform de detalle, un botón que abre un Formulario emergente para buscar los productos con un CntrlList con el mismo sistema y código que al hacer doble clik sobre el producto envía la referencia al procedimiento pero este se pasa el DoCmd.GoToRecord , , acNewRec y no lo ejecuta y no tira ningún error, simplemente cambia el último producto insertado por el nuevo pero no añade ninguno a la lista.
También probé a incrustarlo en el formulario principal como subform y ahí funciono bien, lo cual indica que solo ocurre cuando se envía desde fuera del Form principal.
He probado con también DoCmd.RunCommand acCmdRecordsGoToNew y este si tira el error "El comando no esta disponible en este momento.
Otra cosa muy curiosa es que si pones un punto de interrupción y ejecutas paso a paso, entonces si lo acepta y lo hace bien, tanto con el acNewRec como con el acCmdRecordsGoToNew.
No se si alguien se vió antes en esta situación y como lo resolvió.
Saludos a todos y muchas gracias por las ayudas.
Este es el procedimiento por si ayuda:
Tengo un form de facturación con su encabezado y detalle donde se van añadiendo los productos a facturar.
Estos se añaden des otro subformulario dentro de este mismo de facturación, en donde estan fitrados por familias de productos y haciendo doble clic sobre ellos se insertan en el subform de detalle con un:
DoCmd.GoToRecord , , acNewRec. y pasandole con el ID como referencia realiza una búsqueda por ADO en la tabla y lo inserta
Hasta ahí todo bién, el problema viene ahora que he implementado en el subform de detalle, un botón que abre un Formulario emergente para buscar los productos con un CntrlList con el mismo sistema y código que al hacer doble clik sobre el producto envía la referencia al procedimiento pero este se pasa el DoCmd.GoToRecord , , acNewRec y no lo ejecuta y no tira ningún error, simplemente cambia el último producto insertado por el nuevo pero no añade ninguno a la lista.
También probé a incrustarlo en el formulario principal como subform y ahí funciono bien, lo cual indica que solo ocurre cuando se envía desde fuera del Form principal.
He probado con también DoCmd.RunCommand acCmdRecordsGoToNew y este si tira el error "El comando no esta disponible en este momento.
Otra cosa muy curiosa es que si pones un punto de interrupción y ejecutas paso a paso, entonces si lo acepta y lo hace bien, tanto con el acNewRec como con el acCmdRecordsGoToNew.
No se si alguien se vió antes en esta situación y como lo resolvió.
Saludos a todos y muchas gracias por las ayudas.
Este es el procedimiento por si ayuda:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
'Se envía desde aquí
Private Sub ListArticulos_DblClick(Cancel As Integer)
Dim IntRefer As Integer
'Código del Form emergente
IntRefer = Me.ListArticulos.Column(0)
[Form_Facturación].Secundario12.SetFocus
[Form_Facturación].[Secundario12].Form.BuscaRegistros IntRefer, 1
'Código del subform Familias
' IntRefer = SeleccionarProducto.Column(0)
' [Form_Facturación].Secundario12.SetFocus
' [Form_Facturación].[Secundario12].Form.BuscaRegistros IntRefer, 1
' Exit Sub
End Sub
Public Function BuscaRegistros(intRef As Integer, VengoDeFuera As Integer)
'Función común a todas las entradas para colocar los productos en el subFacturación.
'Se pasa el ID del producto como referencia y un 1 si es que se viene de fuera del subFacturacion
Dim DB As DAO.Database, Rdset As DAO.Recordset
Dim str As String
Dim RetVal%
'Variables de Alias
Dim strRef As String
Dim strAlias As String
Dim strNombre As String
Dim BlAlias As Boolean
If VengoDeFuera = 1 Then 'Venimos de SubFamilias o CodeBar
'Si no es nulo IDProducto/Servicios abrimos nuevo registro.
If Not IsNull(IdProductosServicios) Then
DoCmd.GoToRecord , , acNewRec
' DoCmd.RunCommand acCmdRecordsGoToNew
'Debug.Print Me.IdProductosServicios
End If
End If
str = CadenaDeConexionProd
Set DB = OpenDatabase(str)
Set Rdset = DB.OpenRecordset("Productos/Servicios")
Rdset.Index = "PrimaryKey"
Rdset.Seek "=", intRef
If Rdset.NoMatch Then 'Si no encuentra el registro preguntar si se crea uno nuevo
RetVal = MsgBox("El producto no está registrado." & vbCrLf & "¿ Desea registrarlo ahora?", 4164, "europa")
Select Case RetVal
Case 6 'Si
DoCmd.OpenForm "Productos", acNormal, , , acAdd, acDialog, "Gotonew"
Me.Parent.CBarras.SetFocus
Me.Parent.CBarras = ""
GoTo Cerrar
Case 7 'No
GoTo Cerrar
End Select
Else
With Rdset
Ref = ![IdProducto/Servicios]
Precio = Round(![PrecioVentaPublico], 2)
TipoIVA = ![IvaAplicable]
TexGroup = Nz(![IdGrup], 0)
TexFamily = ![IDFamilia]
Me.TexStock = Nz(!UnidadesEnExistencia, 0)
'**** ALIAS *********************************************************************
'Obtenemos el Nombre del producto
strNombre = ![Productos/Servicios]
'Y ahora el alias y si este es Null se le da por defecto al control el valos del Nombre del producto
strAlias = Nz(![Alias], strNombre)
BlAlias = ![UsarAlias]
End With
If BlAlias Then 'Si se ha marcado UsarAlias
IdProductosServicios = strAlias
IdProductosServicios.ControlTipText = strNombre
Else
IdProductosServicios = strNombre
End If
End If
Valora esta pregunta


0