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

Problemas con versiones Access

 Responder Responder Página  <12
Autor
Mensaje
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10816
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 14/Abril/2019 a las 18:05
- Primero, estás concatenando mal la variable, mira como lo he hecho yo

- Segundo, ¿controlas el que no haya registros en el recordset?

- Tercero, ¿no sería mejor que usaras los nombres de los campos del recordset en vez del orden de los mismos?
              Record!NombreCampoRecordSet   en lugar de   record.fields(1)

- Cuarto, ¿porque empleas value?
              ubica = Record!NombreCampo




Editado por Mihura - 14/Abril/2019 a las 18:06
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5178
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita VIMIPAS Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 14/Abril/2019 a las 22:17
Muy buenas noches.

Disculpadme.... pero con esto:

Set record = BaseDatos.OpenRecordset("SELECT Orden_Atlas FROM Provision WHERE Orden_Atlas = '" & Orden_Atlas & "'")

Yo diría que está abriendo un recordset para un solo campo, que se llama Orden_Atlas de la tabla Provision... . ¿no?

Como va a encontrar los otros Fields(???)

Lo mismo me pierdo, porque Jesús sabe mas que yo, pero....

Saludos.


Editado por VIMIPAS - 14/Abril/2019 a las 22:19
Gracias
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10816
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 15/Abril/2019 a las 09:25
Bien visto Vimipas Wink
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Jose35 Ver desplegable
Habitual
Habitual


Unido: 05/Noviembre/2017
Localización: Aljaraque
Estado: Sin conexión
Puntos: 62
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Jose35 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 15/Abril/2019 a las 11:55
Bueno, primero quiero agradeceros vuestro tiempo y conocimientos. Comentaros también que programo de oído, es decir, copio un ejemplo de un lado u otro y lo adapto a mis necesidades de la mejor forma que encuentro para que funcione, así he conseguido montar el programa en vba que tengo, el cual me ayuda bastante en el día a día de mi trabajo.

Como bien sabes los problemas me han venido a raíz de que un compañero usa Office 365 y yo tengo Office 2013, cuando abrimos los dos la base de datos se corrompe y falla, es por ello que me comentaste la necesidad de hacer un Front-end / Back-end y aqui comienza los problemas, lo que tenia programado empieza a no valer.

Mihura una vez te leí que si alguien era capaz de dibujarte lo que quería tu era capaz de hacerlo en access, así que primero te voy a dibujar (explicandote) lo que pretendo con esta rutina mía, a lo mejor me entendéis todos mejor.

Yo antes abría un Recordset de la tabla Provision, la indexaba por el campo Orden_Atlas y buscaba todos los registros que había en dicha tabla con el mismo numero de Orden Atlas, lo normal es que oscilen entre 1 y 12.

Una vez realizado esto los contaba y ese valor lo asignaba a una variable, para luego extaer de cada registro 3 campos (Ubicacion (ubica), Actuacion (actua) y Estado (estad))

Esta era la rutina para ello:

Sub analisa_actuaciones()

Dim record              As DAO.Recordset
Dim BaseDatos           As DAO.Database
Dim a, b, c             As String


 Set BaseDatos = CurrentDb
 
 Orden_Atlas = Forms!frmModeloProvisión![Orden_Atlas]

'Creamos un Recorset y le indicamos que busque la orden Atlas en nuestra Base de Datos
'para saber el nº de actuaciones asosiadas a esa orden y asi ver las ubicaciones
'de cada actuacion

Set record = BaseDatos.OpenRecordset("Provision", dbOpenTable)
    
      
    record.Index = "Orden_Atlas"
    record.Seek "=", Orden_Atlas
    b = Orden_Atlas
    
' Contamos el numero de actuaciones con la misma orden

a = DCount("Orden_Atlas", "Provision", "Orden_Atlas='" & b & "'")

'Procedemos segun el numero de actuaciones que nos indique y el cual hemos asignado a la variable a
'Despues segun el valor de la variable a mostraremos solo los campos necesarios y los rellenaremos con la ubicacion

ubica = record.Fields(5).Value
actua = record.Fields(1).Value
estad = record.Fields(2).Value

If a = 2 Then
Forms!frmModeloProvisión![Ubicacion2].Visible = True
record.MoveNext
ubica2 = record.Fields(5).Value
actua2 = record.Fields(1).Value
estad2 = record.Fields(2).Value
Forms!frmModeloProvisión![Ubicacion2] = record.Fields(5).Value



ElseIf a = 3 Then
Forms!frmModeloProvisión![Ubicacion2].Visible = True
Forms!frmModeloProvisión![Ubicacion3].Visible = True
record.MoveNext
ubica2 = record.Fields(5).Value
actua2 = record.Fields(1).Value
estad2 = record.Fields(2).Value
Forms!frmModeloProvisión![Ubicacion2] = record.Fields(5).Value
record.MoveNext
ubica3 = record.Fields(5).Value
actua3 = record.Fields(1).Value
estad3 = record.Fields(2).Value
Forms!frmModeloProvisión![Ubicacion3] = record.Fields(5).Value

así hasta una posibilidad de 12 actuaciones con el mismo numero de orden, os he copiado solo para 2 o 3 actuaciones.

Ahora Mihura respecto a lo que tu me indicas para la nueva forma de actuar, no se como concatenar la variable, creía que lo había realizado tal y como tu me habías escrito.

Tampoco se si se llena o no el registro, no se como averiguarlo y ahora gracias a ti he descubierto que se puede poner el nombre del campo en vez del numero, tampoco sabia que no era necesario el value.

Bueno perdonarme por haberme extendido tanto, era para intentar que comprenderíais lo que quiero y pretendo.

Saludos.
Arriba
Jose35 Ver desplegable
Habitual
Habitual


Unido: 05/Noviembre/2017
Localización: Aljaraque
Estado: Sin conexión
Puntos: 62
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Jose35 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 15/Abril/2019 a las 12:35
Me da que ya se como hacerlo, luego le echo un rato y os cuento, creo que es mas fácil de lo que parece y ahora entiendo lo que me querías decir con llenar el record.


Arriba
 Responder Responder Página  <12
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable