Asignación Automática De Proveedores

Tengo que realizar una base de asignación automática de proveedores.
No tengo idea de como hacerla me podría

1 respuesta

Respuesta
1
En primer lugar debo comentarte que tu pregunta es muy "abierta", y según lo que pidas deberás tener un poco de paciencia porque me estás pidiendo una cosa sin siquiera tener una BD creada (con lo que ello implica).
Digo "según lo que pidas" porque no entiendo qué quieres decir cuando indicas "asignación automática de proveedores". ¿Qué significa eso?
Te ruego pues que seas bastante más explícito, y si pudieras poner un ejemplo para entenderlo mejor sería de mucha ayuda.
Mira el ejemplo:
Tengo una tabla de proveedores, donde cada proveedor tiene una especialidad
en otra tengo una tabla donde llamada base es donde almaceno otra información.
En el formulario de ingreso de la tabla base quiero crearle un botón de asignación automática donde me traiga el proveedor siguiente que está en la tabla proveedores según la especialidad.
Mil gracias
Lamento comentarte que sigo sin ver claro lo que quieres conseguir. Bueno... esto son los problemas de "la distancia"... je, je...
Si te parece bien vamos a hacer una cosa: entiendo que tu tabla de proveedores tiene los registros más o menos así:
Proveedor / Especialidad
Toni / Fontanero
Luis / Electricista
Pepe / Fontanero
Etc.
¿Es correcto este planteamiento?
Y ahora viene lo que no acabo de ver claro. ¿Me podrías poner un ejemplo de lo que quieres conseguir en el formulario a través del botón? Por ejemplo, valga la "rebuznancia", lo que sería la introducción de dos registros.
Por ejemplo:
1- Primer registro: Tengo a Toni (Fontanero) e introduzco otros datos sobre Toni.
2- Segundo registro: Le doy al botón y el siguiente en esa especialidad es Pepe, por lo que me debería aparecer Pepe en el registro para poder introducir los siguientes datos.
No sé si es eso lo que quieres exactamente. Te ruego pues que me lo clarifiques un poco, por favor (a través de un ejemplo).
Bueno. Ya me dirás cosas.
Buenas noches amigo
Te explicare más detalladamente
1. En la tabla proveedores tengo 5 electricistas y 6 fontaneros por especialidad.
2. En la tabla base tengo los campos especialidad, fecha_asig, Dirección, teléfono, hora y proveedor.
3. En el formularios de Tabla base no lo quiero seleccionar al proveedor.
4. Quiero que con un botón "asignación automática" en el formularios de Tabla base me busque el proveedor que sigue en turno y me lo coloque en el campo proveedor.
Ejemplo
Toni / Fontanero, Luis / Electricista, Pepe / Fontanero Pedro/fontanero
Ingreso en el formulario tabla base
especialidad=fontanero
fecha_asig=09/08/2011
Direccion = CALLE 57 No 9-07
telefono = 311 5604552
hora=8 AM
Proveedor= Buscar el ultimo fontanero asignado y traerme el siguiente de la tabla proveedores.
Amigo mil gracias
Ten en cuenta que voy a hacer una serie de suposiciones, que te indico en la propia explicación. Tú deberás utilizar los elementos que tú tengas en tu BD y, para el código, deberás cambiar los nombres que yo utilizo por los tuyos. También, como no lo indicas, supongo que no trabajas con Id de clave principal.
Te lo explico también a través de la realización de una consulta de selección, porque así verás cómo la vamos construyendo y quizá te pueda ser útil en un futuro. Si te lo pusiera en SQL quizá no te sería tan útil.
Finalmente comentarte que debes respetar el orden en que, en la explicación, te indico los campos. Si no lo haces así el código no te funcionará.
Vamos a ver si acierto con la respuesta:
1.- Crea una consulta en vista diseño. Le añades las tablas <Proveedores> y <Tabla base> (supondré que las tablas se llaman así)
2.- De la tabla <Proveedores> coges el campo [Proveedor] (supondré que el campo se llama así, y que es el que recoge el nombre del proveedor) y lo arrastras hasta el campo [Proveedor] de la tabla <Tabla base>. Verás que te queda unido por una línea.
3.- Te colocas sobre esa línea y haces clic con el botón derecho del ratón (tienes que afinar bastante). Verás que te sale una opción que se llama "Propiedades de la combinación". Lo seleccionas
4.- En la ventana que te aparece le dices que quieres la combinación donde se muestren TODOS los registros de la tabla <Proveedores> (probablemente, si has seguido el orden que te he marcado en el punto 1, será una combinación de tipo 2).
5.- Al grid de la consulta arrastras, de la tabla <Proveedores>, los campos [Proveedor] y [Especialidad], y de la tabla <Tabla base> el campo [fecha_asig]
6.- En la línea de criterios, bajo el campo [fecha_asig], escribes ES NULO
7.- Guardamos la consulta con el nombre de CAsignaciones
Vámonos al formulario
8.- Creas un botón de comando (el de asignación automática). Sacas sus propiedades y te vas a la pestaña Eventos->Al hacer click. Le das al pequeño botón que te aparece con puntos suspensivos. En la ventana que te aparece le dices que quieres generar código.
9.- Se te abrirá el editor de VB (VBE), con dos líneas por defecto (Private Sub... y End Sub). Esas líneas no debes tocarlas. En medio de ellas escribes el siguiente código (te lo escribo comentado para que sepas qué hace cada cosa).
---
Private Sub...
'Definimos las variables iniciales
Dim rst As Recordset
Dim vProv As String
Dim vEsp As String, vEspC As String
'Cogemos el valor de la especialidad seleccionada
vEsp = Me.Especialidad.Value
'Creamos el recordset
Set rst = CurrentDb.OpenRecordset("CAsignaciones")
'Si no hay registros lanza un mensaje y sale del procedimiento
If rst.RecordCount = 0 Then
MsgBox "No existen proveedores pendientes de asignación", vbInformation, "AVISO"
Me.Undo
GoTo Salida
End If
'Nos movemos al primer registro
rst.MoveFirst
'Recorremos los registros hasta encontrar la primera coincidencia
'con la especialidad
Do Until rst.EOF
vEspC = rst.Fields(1).Value
If vEspC = vEsp Then
'Cogemos el valor del proveedor
vProv = rst.Fields(0).Value
'Lo llevamos al campo correspondiente del formulario
Me.Proveedor.Value = vProv
'Salimos del DO
Exit Do
End If
'Si no ha habido coincidencia pasamos al siguiente registro
rst.MoveNext
Loop
'Si no se ha podido añadir el valor lanza un mensaje de aviso y
'limpia el formulario
If IsNull(Me.Proveedor.Value) Then
MsgBox "No existen más proveedores de esta especialidad pendientes" _
& " de asignación", vbInformation, "AVISO"
Me.Undo
End If
'Cerramos conexiones y liberamos memoria
Salida:
rst.Close
Set rst = Nothing
End Sub
---
Por si tienes algún problema te he creado una miniBD para que puedas consultarla. Puedes bajártela aquí. En especialidad puedes escribir o bien Fontanero o bien Electricista.
Y eso es todo. Recuerda, en el código, cambiar tus nombres por los que yo he utilizado
Ya me dirás.
Amigo abrí la base de datos y es lo que estoy buscando
Mil y mil gracias.
Terminare mi base y comentare si tengo alguna duda.
Nuevamente gracias.
Me alegra haber acertado con la solución que necesitabas. Si tienes algún problema me comentas.
Lo que sí que te rogaría es que, si todo va bien, no te olvides de cerrar la consulta. ;)
Buenas tardes amigo
Como se podría modificar para que cuando asigne el último proveedor reinicie la asignación al primer proveedor.
Ejemplo:
Electricista; Oscar; 16-08-2011
Electricista; Carlos; 16-08-2011
Electricista; pedro; 16-08-2011
Electricista; Oscar; 17-08-2011
Gracias por su ayuda
Oscar Molina
Lo que estás pidiendo resulta un poco complicado de programar, máxime si no conozco la estructura de tu BD. Para hacerlo requeriría:
1.- Ver la estructura de tu BD
2.- Con toda probabilidad tener que modificarla
3.- Pensar el procedimiento más adecuado y qué código debo emplear para hacerlo.
4.- Testear para detectar si se producen errores e intentar corregirlos.
No es que no quiera echarte una mano, pero eso es bastante "time-consumig".
Si quieres pasarme la BD (comprimida en zip o rar) a mi correo le echo un vistazo, pero ya te puedo decir que una respuesta rápida no te la podré dar.
Mi mail es [email protected]
Ya me dirás

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas