| |  |  | Miembros: Mensajes: Temas: Online: Ultimo Miembro: | | |  | | |
 | 
11-07-2005, 11:37:23
|  | Buena Participación en el Foro | | Registrado: abr 2004 Ubicación: Bilbao Posts: 65
| | Problema con un Insert + Select Hola, como os va? despues de mucho tiempo vuelvo a pedir ayuda. El problema de esta vez es con un Insert. Es la siguiente: Código: insert into estudioclientes(optica,tipogla,tipoencargo,importe,fecha,codigocliente,cliente,direccion,cp,
poblacion,provincia,tarjeta) select nionencargostarjeta.tienda,unionencargostarjeta.tipogla,
unionencargostarjeta.tipoencargo,unionencargostarjeta.importeprevisto,
unionencargostarjeta.fechaencargo,unionencargostarjeta.codigocliente,
unionencargostarjeta.nombre,unionencargostarjeta.direccion,
unionencargostarjeta.cp,unionencargostarjeta.poblacion,
unionencargostarjeta.provincia,unionencargostarjeta.tarjeta from unionencargostarjeta where (( unionencargostarjeta.tienda = 'BOULEVARD' ) ) Lo que hago es meter en una tabla los datos uqe me devuelve una select que despues vuelco a un excel pero ahora quiero mejorarla. Tengo problemas si dos personas usan a la vez el programa ya que una select machaca a la otra y yo habia pensado añadirle a la tabla el campo usuario y a la vez que meto esos datos meter el usuario que lo tengo guardado en una variable pero no encuentro la forma de hacerlo. Lo quie quiero es que si alguien ejecuta el programa inserte sus lineas con su usuario y sean esas las que vuelque al excel, ahora mismo si alguien lo ejecuta añade las lineas y si alguien a la vez tambien lo ejecuta se machacan los datos y no se muestran correctamente en los excel
¿Alguien me puede ayudar o darme otra solucion? Muchisimas gracias
__________________
Manoli
| 
11-07-2005, 11:56:56
|  | Administrador | | Registrado: dic 2002 Ubicación: BURGOS - ESPAÑA Posts: 5.490
| | Hola, Manoli... Ya pensé que te habías olvidado de nosotros... Fíjate si habrá pasado tiempo que hasta cumpliste un añito más y no brindaste por nosotros...
Bueno, tu problema surge sistemáticamente cuando varios clientes generan el mismo informe con distintas condiciones. Yo tengo solucionado este tema de la siguiente forma:
En cada cliente he creado una carpeta con el mismo nombre que la Aplicación. En ese directorio tengo una base de datos, igual para todos los clientes, pero lógicamente distinta, porque cada uno usa la suya (C:\NombreAplicación\MiBD.mdb). Ahí genero las tablas que voy a usar en los reportes o informes o listados... Y de esta forma, como cada cliente usa distintas tablas, pueden perfectamente trabajar todos al tiempo, y cada cual respeta el trabajo del vecino.
Sé que alguien que sepa solucionarlo de una forma "científica" se mostrará sorprendido de mi ingenuidad... Pero a mí me va muy bien este sistema, aunque sea rudimentario... No obstante, este es el momento para decir: Pues eso tiene una solución más lógica, que es tal y cual...
Bueno, que me agrada volver a saber de ti. Y que ojalá quede resuelto tu problema. | 
11-07-2005, 12:03:24
|  | Buena Participación en el Foro | | Registrado: abr 2004 Ubicación: Bilbao Posts: 65
| | Hola! Encantada del reencuentro!!
el problema de tu solucion es que la base de datos está en el servidor y no hay mas que esa para todo el mundo, no me puedo estar creando sitios para cada usuario. Otra solucion rudimentaria, que es la que yo tenia antes, era en vez de usar un insert ir volcando linea a linea en la tabla y añadiendole el usuario en ese campo, pero usé un insert para reducir el tiempo de ejecucion y mira por donde que igual me toca volver a ese metodo....
__________________
Manoli
| 
11-07-2005, 12:05:27
|  | Moderador | | Registrado: dic 2002 Ubicación: Madrid Posts: 4.307
| | Te has planteado la posibilidad de insertar el resultado directamente en Excel en vez de crear la tabla intermedia ?.
Otra cosa que puedes probar es insertar un campo TIENDA en la tabla que recibe, de esta forma aunque dos usuarios ejecuten la consulta, estos se actualizarán unívocamente en la tabla (Agrupados por tienda).
PD: Estoy observando que J.M.Movilla ya ha hecho de las suyas y se me ha adelantado. En cualquier caso asigna mayor peso específico a su respuesta (En bases de datos él es el maestro y yo el mancebo de la botica) y encantado de verte de nuevo entre nosotros. | 
11-07-2005, 12:11:22
|  | Buena Participación en el Foro | | Registrado: abr 2004 Ubicación: Bilbao Posts: 65
| | hola jo, creo que me he explicado a medias, bueno, aqui va lo que me comí antes. A parte de ese insert hago otro mas y cuando tengo los datos de los dos insert juntitos en la tabla les hago un filtro de importe, por eso no puedo volcarlos directamente en el excel.
Lo que me dices de la tienda no se si es lo que yo he hecho. En la tabla que junto los dos insert he añadido el campo usuario que es el que se informaria con el nombre de la persona que ejecuta el programa y que lo tengo guardado en la variable vUsuario. Pero como no se como informarlo....
__________________
Manoli
| 
11-07-2005, 12:30:43
|  | Administrador | | Registrado: dic 2002 Ubicación: BURGOS - ESPAÑA Posts: 5.490
| | Algo no he aclarado adecuadamente, puesto que no has interpretado bien mi mensaje... Por supuesto que la base de datos es ÚNICA y está EN EL SERVIDOR... Lo que yo te decía era crear un fichero con las tablas que tú vayas a emplear de forma TEMPORAL... Ésas son las que tendrá cada cliente en su propio disco duro... y ésas son las que actualiza cada cliente en sus informes. Por eso nadie machaca nada a nadie. | 
11-07-2005, 12:34:02
|  | Buena Participación en el Foro | | Registrado: abr 2004 Ubicación: Bilbao Posts: 65
| | no, no puedo hacer eso, piensa que tenemos clientes en bilbao, barakaldo, vitoria...yo no puedo ir ordenador a ordenador creando esas carpetas. Se me acaba de ocurrir algo que aunque no es la mejor solucion del mundo podría servir como algo provisional, si me funciona os lo cuento.
__________________
Manoli
| 
11-07-2005, 12:39:28
|  | Buena Participación en el Foro | | Registrado: abr 2004 Ubicación: Bilbao Posts: 65
| | aqui va la solucion chapucilla. En mi pantalla hay muchos filtros, yo los voy recorriendo y concatenando una select que es la que ejecuto para insertar en la tabla el resultado de esa select. Lo que hago es paralela a esa concatenacion voy haciendo otra que usaré con un update. De forma que si primero hago una select de clientes de barakaldo con codigo postal 48012 luego hago un update de usuario ='manoli' de los clientes de barakaldo con codigopostal 48012 y a la hora de mostrar saco solo los que tengan mi usuario, asi dejo los datos de los demas en paz. El problema es que dos personas ejecuten a la vez usando los mismos filtros pero mira que eso sería una jodia casualidad.... como tampoco es un programa que se vaya a usar con excesiva frecuencia confiemos en que no ocurra. Y ademas, haciendolo de esta forma un unico usuario incluso podria ejecutarlo varias veces con distintos filtros.
__________________
Manoli
| 
11-07-2005, 15:40:34
|  | Administrador | | Registrado: dic 2002 Ubicación: BURGOS - ESPAÑA Posts: 5.490
| | Bueno, esa fórmula tuya viene a buscar el mismo resultado que la mía... Que cada uno utilice su específico fichero temporal... Ojalá te resulte. Siempre puedes haces una previa comprobación de que no exista ya el fichero que van a utilizar... | | Herramientas | | | | Desplegado | Mode Lineal |
Normas de Publicación
| no Puedes crear nuevos temas no Puedes responder a temas no Puedes adjuntar archivos no Puedes editar tus mensajes Código [IMG] está habilitado Código HTML está deshabilitado | | | La franja horaria es GMT. Ahora son las 06:21:05.
Powered by vBulletin® Version 3.6.8 Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design
|  |