Resultados 1 al 8 de 8

Tema: Consulta Access 2010

  1. be_nito
    be_nito está desconectado
    Conocedor del PC
    Fecha de ingreso
    05 feb, 10
    Mensajes
    449

    Consulta Access 2010

    Hola Buenos días a todos:

    Tengo una base de datos echa con Access 2010 de toda la música que tengo, ahora bien el problema que quiero hacer una determinada consulta y no se como hacerla, por eso a ver si me podéis poner algún enlace o ayuda de como hacerla.

    Uno de los campos de la tabla como es lógico, es la duración de cada canción. Este campo lo tengo con formato fecha/hora, precisamente para que pueda operar con minutos/segundos. (Igual si los minutos/segundos los paso todo a segundos y le doy formato numero al campo, operaria mejor, no se).

    Lo que yo busco es como hacer una selección aleatoria de canciones en función de un tiempo determinado. Pues que la selección de canciones que me haga, no supere en total los 60 minutos entre todas las canciones, o 90 minutos, etc.

    De Access como se notara se lo justo, nada de SQL o parecido jejeje.

    Bueno pues nada mas, esa es mi pregunta, Saludos y buen dia.
    Última edición por be_nito; 03/10/2013 a las 10:54 Razón: Intentar cambiar titulo del post

  2. sayonara-p
    sayonara-p está desconectado
    Usuario registrado CV Avatar de sayonara-p
    Fecha de ingreso
    04 jun, 10
    Ubicación
    El Bierzo
    Mensajes
    1,626
    Hasta donde llega mi conocimiento de SQL y, si he entendido bien lo que quieres hacer, no bastaría con una consulta SQL para sacar esos datos. Sería necesario un script, macro o algo similar (es que ni sé cómo se llamarán ahora en Access, hace mil años que no lo uso).


    Se me ocurre un script capaz de crear esa lista que tú necesitas, pero sin tener todos los datos es difícil ser más concreto.


    En pseudo-código sería algo así:

    Código:
    lista = array vacío   //esta sería la lista final de canciones. al principio estará vacía
    temp_duracion = 0 segundos   //aquí se irá almacenando la duración acumulada de todas las canciones de la lista
    max_duración = 3600 segundos   // aquí indicas cuánto quieres que dure como máximo la sesión
    
    max_id = obtenerMaxID(tabla_canciones)  // obtienes la ID más alta de todas tus canciones
    aleatorio = random(max_id)   // obtienes un número aleatorio entre 0 y la ID más alta de todas tus canciones
    
    while ( temp_duracion < max_duracion )       // mientras la duración acumulada no exceda la duración máxima
    {
        if ( existeCancion(id = aleatorio) )     // si existe una canción con esa ID generada aleatoriamente.
        {
           lista -> añadir_cancion(aleatorio)     // añadimos la canción a la lista
           temp_duracion = temp_duracion + obtenerDuracion( id = aleatorio) // sumamos la duración
        }
    }
    // cuando la duración acumulada sea mayor que la duración máxima, se sale del bucle.
    
    return lista  // devolvemos la lista de canciones.

  3. be_nito
    be_nito está desconectado
    Conocedor del PC
    Fecha de ingreso
    05 feb, 10
    Mensajes
    449
    Hola de nuevo:

    Gracias Sayonara-p por tu ayuda. Pero como me imaginaba al no encontrar nada similar por Google, ni ejemplos ni consultas similares, fácil no iba a ser la cosa.

    Si lo de SQL se va de mis conocimientos, aunque estoy empezando a ver videos y tutoriales de SQL, los script mas todavía. Supongo que será como una macro que contiene una determinada relación de ordenes para interactuar con el SO o bien algún programa, pero desconozco como se usan, ejecutan o se crean, por eso si te prestas a ayudarme te pido mucha pacienciencia jejejeje. y me lo detalles punto por punto como debo copiarlo/crearlo, como y donde guardar el script y lo mas importante, como y desde donde lo ejecuto, y también donde aparecerá/guardara la información obtenida.

    Te cuento como tengo la Base de Datos contruida. Es muy simplona y muy de andar por casa para mi nada mas. Antes tenia todo metido en Excel y con filtros ya me apañaba. Luego las selecciones de canciones las hacia metiendo la música en programas como iTunes o MusicMachbox y hacia una lista inteligente de reproducción, q

  4. be_nito
    be_nito está desconectado
    Conocedor del PC
    Fecha de ingreso
    05 feb, 10
    Mensajes
    449
    Hola de nuevo:

    Nada que antes por error al escribir antes y darle a alguna tecla envié el mensaje a medio terminar y ahora al entrar para modificarlo no me deja modificarlo/enviarlo, por eso hago de nuevo una respuesta con todo completo.

    Gracias Sayonara-p por tu ayuda. Pero como me imaginaba al no encontrar nada similar por Google, ni ejemplos ni consultas similares, fácil no iba a ser la cosa.

    Si lo de SQL se va de mis conocimientos, aunque estoy empezando a ver videos y tutoriales de SQL, los script mas todavía. Supongo que será como una macro que contiene una determinada relación de ordenes para interactuar con el SO o bien algún programa, pero desconozco como se usan, ejecutan o se crean, por eso si te prestas a ayudarme te pido mucha pacienciencia jejejeje. y me lo detalles punto por punto como debo copiarlo/crearlo, como y donde guardar el script y lo mas importante, como y desde donde lo ejecuto, y también donde aparecerá/guardara la información obtenida.

    Te cuento como tengo la Base de Datos contruida. Es muy simplona y muy de andar por casa para mi nada mas. Antes tenia todo metido en Excel y con filtros ya me apañaba. Luego las selecciones de canciones las hacia metiendo la música en programas como iTunes o MusicMachbox y hacia una lista inteligente de reproducción, que luego grababa o no.

    Tengo contraídas tres tablas nada mas, Artistas, Discos y Canciones. (los nombres de objetos y campos son literales como los tengo yo OK y todo va sin acentos ni espacios).

    La tabla "Artistas" solo tiene dos campos:

    - Artista, (texto)(campo clave)
    - Estilo_Musical. (texto)

    La tabla "Discos" tiene 4:

    - Año_Lanzamiento, (texto)
    - Titulo_Disco, (Texto)(campo clave)
    - Caratula_Frontal, y (objeto OLE)
    - Artista. (texto)

    Luego "Canciones" tiene ya 13 campos:

    - Id (Autonumeracion),
    - Titulo_Disco, (texto)
    - Numero_Cancion,D (texto)
    - Duración (fecha/hora 00:00:00)
    - Dur_Num (campo también de duración de la canción, pero en este pase todo a segundos y asi tengo el campo con formato numero por si es mas fácil operar con el),
    - Titulo_Cancion, (texto)
    - Posición_Directorio, (texto)
    - Genero, (texto)
    - Estado, (texto)
    - Tipo, (texto)
    - Ritmo, (texto)
    - Estilo, (texto) y
    - Estado_Revision. (texto)

    Las tablas las tengo relacionadas de la siguiente forma, Tabla Artistas con su campo Artista, esta relacionada con la tabla Discos con su campo Artista en una relación uno a varios de Artistas a Discos.

    Luego la tabla Discos con su campo Titulo_Disco esta relacionada con la tabla Canciones y su campo Titulo_disco también con una relación uno a varios de Discos a Canciones.

    La consulta que haría como es lógico no necesita llevar todos los campos, y se harian en función de los siguientes campos dentro de la misma consulta, claro:

    - Genero: Aquí están clasificadas en Pop, Blues o Jazz
    - Estado: Aquí las tengo clasificadas en Especial, Activas y No Activas.
    - Tipo: Aquí las tengo clasificadas en Balada o Ambiental.
    - Ritmo: Aquí están en, Muy Lenta, Lenta o Moderada, y luego queda
    - Dur_Num: Este seria el campo de duración de la canción que las tengo pasadas todas a segundos y este campo esta en formato numero. (todos los demás campos están en formato texto).

    Pues estos serian los campos con los que modificaría en cada consulta según lo que buscase en dicha selección, pues que fuera una selección solo de música Pop, o Baladas, o de 3600 segundo, etc.

    El resultado que me tiene que devolver la consulta seria nada mas, el Nombre del Artista, el Disco en que esta, el Numero de canción que ocupa en ese disco y el titulo de la canción.

    Si te facilito tanta información, es por si lo haces que lo hagas con un buen conocimiento de la base de datos, seria tontería infórmate a medias y que luego tu trabajo no valiera de nada.

    Sayonara-p, desconozco que si lo que te estoy pidiendo es mucho o poco, si es muy difícil o muy facil de hacer o explicar, pero si ves que es demasiado trabajo no te preocupes y pasa de todo OK que como apaño seguiría con lo de iTunes.

    Si decides hacer algo tómatelo con tiempo OK, no tengo prisa ninguna y si necesitas alguna información mas pídela.

    Saludos Sayonara-p y gracias por todo, buen dia

  5. be_nito
    be_nito está desconectado
    Conocedor del PC
    Fecha de ingreso
    05 feb, 10
    Mensajes
    449
    Hola de nuevo:

    De todas formas, como ahora ya se que se trata de hacer un scipt, pues ya también buscare tutoriales e información a ver lo que se saca en limpio, jejejeje.

    Si conoces algún buen tutorial o ejemplos, si puedes facilítamelos para echarle un vistazo.

    Saludos.

  6. be_nito
    be_nito está desconectado
    Conocedor del PC
    Fecha de ingreso
    05 feb, 10
    Mensajes
    449
    Hola de nuevo:


    Bueno pues ya he leído algo mas, y creo entender que el script que me comentas o cualquier otro, se debe introducir en una consulta, seleccionar vista SQL e introducir dicho código o script y ejecutar dicha consulta.

    Ahora el problema es definir correctamente el script, con los comandos correctos, jejejeje

    Bueno seguimos investigando, pero la verdad veo que hay que leer mucho y aunque sea un tutorial básico, llevara su tiempo.

    Saludos.

  7. sayonara-p
    sayonara-p está desconectado
    Usuario registrado CV Avatar de sayonara-p
    Fecha de ingreso
    04 jun, 10
    Ubicación
    El Bierzo
    Mensajes
    1,626
    Te recomiendo siempre siempre siempre usar campos numéricos (preferiblemente unsigned y auto-increment, aunque son atributos SQL que no sé cómo manejará Access 2010) como clave primaria de las tablas. Facilitan mucho las cosas a la hora de recuperar y manejar de forma unívoca un solo registro.

    Otra cosa que igual te interesa cambiar es la relación entre artistas y álbum. Puede haber álbumes de recopilación (como aquello que hacían de "Los 100 de Tipo") con varios artistas. Ahí se te queda coja la base de datos. Podría ser mejor una relación N:M. Si no tienes recopilatorios o no quieres contemplar la posibilidad, déjalo como está.


    Si puedes pásame tu base de datos y miro más concretamente, que también tengo Access 2010 aunque apenas lo uso (para gestionar cosas con bases de datos, me atrae más PHP + MySQL).



    Pero por dificultad no es, yo creo. Pero igual se tarda más en explicarlo que en hacerlo.

  8. be_nito
    be_nito está desconectado
    Conocedor del PC
    Fecha de ingreso
    05 feb, 10
    Mensajes
    449
    Hola de nuevo:

    Pues muchas gracias por prestarte a ayudarme. Se que es muy tedioso y largo de explicar ya que son muchos pequeños matices juntos.

    En principio la base de datos aun la estoy empezando a llenar, llevo nada mas que 1000 registros metidos, unos 5-6 artistas. Pero para ejemplo ya vale.

    Respecto a lo que dices de los Cd's recopilaciones de varios artistas tienes razón, pero nunca he sabido crearla correctamente para evitar duplicados y eso. Y de esta vez la cree así, y como me quedo bien, pues ya la deje así, aunque se que no esta bien bien estructurada por el motivo que tu expones. (por eso usaba Excel).

    Lo de crear campos Id autonumeración como campos clave ya lo sabia, es de las primeras cosas que te dicen cuando haces algún curso de Access, jejeje, pero es que ahí era donde me liaba y luego las relaciones no me quedaban bien, asi que no le di muchas vueltas y me fui a Excel.

    Pásame tu mail por privado y te la mando adjunta. Luego tu ya la ves y haces las modificaciones que desees, pues como aun esta por empezar, no importa si tengo que volver a meter de nuevo todos los registros que no son muchos, Es mas importante aunque sea empezarla de nuevo y reestructurarla bien, que dejarla mal.

    O si prefieres te la adjunto a un servidor como Rapidshred o similar.

    Como tu mejor veas, pero por mail siempre se pueden dar algunas explicaciones adjuntas a temas puntuales.

    Espero tus noticias, saludos y muchas gracias por todo.