** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Apertura nuevo form
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Apertura nuevo form

 Responder Responder
Autor
Mensaje
waxpoo Ver desplegable
Nuevo
Nuevo


Unido: 07/Marzo/2018
Localización: Burgos
Estado: Sin conexión
Puntos: 7
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita waxpoo Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Apertura nuevo form
    Enviado: 07/Marzo/2018 a las 12:13
Hola!!! A ver si alguien me puede iluminar un poco.
Le he dado vueltas y ya no sé ni si voy bien o totalmente perdido.

Tengo un formulario a modo de resumen donde muestro las facturas de mis clientes que tengo abiertas en ese día (abiertas que han comprado algo y pueden volver a comprar más con lo que se les sigue añadiendo)

Si introduces en el campo TEXTO el número de cliente te conduce a otro formulario donde agrego artículos a su factura. Hasta aquí más o menos bien.

El problema me surge cuando no tengo ningún documento abierto para un cliente que digamos que acaba de llegar. Lo que necesitaría es que abra un nuevo formulario, en el campo COD_CLIENTE me agregue el código del nuevo cliente y me sitúe en el subformulario para comenza ha añadir artículos a la factura.

'consulto si existen documentos abiertos para ese cliente.
consulta = "Select * from T_documentos where DOC_cliente =" & cliente
        Set rst = CurrentDb.OpenRecordset(consulta)
        
stDocName = "F_Documentos"
        
If (rst.RecordCount) <= 0 Then  
'no hay documento abierto
        DoCmd.OpenForm stDocName, , , , acFormAdd, , cliente
        Else
'en caso de que sí existe, lo abre "filtadro"
            stLinkCriteria = "[DOC_Cliente]=" & Me![TXT_cliente]
                DoCmd.OpenForm stDocName, , , stLinkCriteria
End If

En el formulario F_Documentos (que es el que pretendo abrir) le había dado la instrucción de cuando se abra me agregue un nuevo registro, pero esto me falla ya que a añadir un registro nuevo me da error por no tener COD_CLIENTE asignado.

        T_DOC_SUB.SetFocus
        DoCmd.GoToRecord , , acNewRec


Gracias.

Arriba
waxpoo Ver desplegable
Nuevo
Nuevo


Unido: 07/Marzo/2018
Localización: Burgos
Estado: Sin conexión
Puntos: 7
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita waxpoo Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 07/Marzo/2018 a las 12:33
No es lo que quería, pero releyendo mi mensaje en este foro me he dado la respuesta a mi mismo.

Forms![F_Documentos]![DOC_cliente] = cliente

De todos modos, no me "gusta" la forma de hacerlo, así que si ha alguien se le ocurre otra mejor estoy abierto a propuestas.

Gracias.

Arriba
MexMan70 Ver desplegable
Colaborador
Colaborador


Unido: 17/Julio/2007
Localización: DarkSide
Estado: Sin conexión
Puntos: 9220
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita MexMan70 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 07/Marzo/2018 a las 15:41
Y no te fallara porque le dices que el campo a comparar se llama [DOC_Cliente] ? 
Luego dices al final de tu primer hilo que se llama COD_CLIENTE. Revisa meticulosamente los nombres.

Otra forma de hacerlo sin derrochar recursos sería así:
   If DCount("*","T_documentos","[DOC_Cliente]=" & Me.cliente) > 0 Then
      'en caso de que existan registros, lo abre filtrado
      DoCmd.OpenForm "F_Documentos", , , "[DOC_Cliente]=" & Me.cliente
   Else
      'no hay registros, se abre en modo Adición
      DoCmd.OpenForm "F_Documentos", , , , acFormAdd, , Me.cliente
   End If
En el Formulario F_Documentos usas en el evento Al Cargar (OnLoad) el siguiente código:

 If Len(Me.OpenArgs) > 0 Then
   Me.DOC_cliente = Me.OpenArgs
 End If
Saludos !


Editado por MexMan70 - 07/Marzo/2018 a las 15:45
OneDrive: http://sdrv.ms/Vk6eJd
Arriba
waxpoo Ver desplegable
Nuevo
Nuevo


Unido: 07/Marzo/2018
Localización: Burgos
Estado: Sin conexión
Puntos: 7
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita waxpoo Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 08/Marzo/2018 a las 09:03
Gracias por la aportación!!!

Otra idea que desarrollé ayer en mi pensamiento es si existe proceder y en caso de no: hacer un insert en la tabla y volver otra vez atrás, con lo que ya encontrará un registro en la tabla y procede de igual forma. 

Pero vamos, probaré las dos opciones.
De todos modos GRACIAS!!!!!

Arriba
waxpoo Ver desplegable
Nuevo
Nuevo


Unido: 07/Marzo/2018
Localización: Burgos
Estado: Sin conexión
Puntos: 7
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita waxpoo Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 14/Marzo/2018 a las 07:49
Hola!!!
Sigo mejorando mi formulario y ahora se me presenta otro pequeño problema. (el primero superado, GRACIAS!!!!)

Sigo con mi tabla de T_documentos. Un formulario que se llama F_INICIO en el cual figura una lista con todos las facturas que tengo "abiertas" (abierta significa que un cliente viene compra algo, se va, al cabo de un tiempo vuelve añade algo más, etc... y así todo el rato).

Desde el formulario F_inicio deseo seleccionar un cliente (el 20 por ejemplo) introducirlo en el campo TXT_cliente y que con ello se me abra otro formulario donde crear la factura (si no tiene nada anterior) o seguir añadiendo en caso de que lo que tenga. Hasta aquí todo correcto.

El problema reside cuando, supongamos que el cliente 20 decide que quiere pagar y le emitimos la factura (tengo un campo DOC_estado para saber si está abierto o no). lo lógico (o lo que deseo) es que al introducir al cliente 20, al no tener ningún documento abierto me genere uno nuevo vacío. El problema es que me recupera el documento que en teoría ya está cerrado.

A ver si alguien me puede dar un empujoncito.
Gracias!!!

Arriba
emiliove Ver desplegable
Moderador
Moderador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 4623
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita emiliove Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 14/Marzo/2018 a las 15:45
Hola Waxpoo y bienvenido al foro

Si la preguntas inicial ya fue resuelta, y para cumplir con las normas del foro deberías de hacer tu pregunta en un hilo nuevo y dar por terminado este.

Saludos.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable