Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Consulta múltiple en Access

Estas en el tema de Consulta múltiple en Access en el foro de Bases de Datos General en Foros del Web. Muy buenas. A diferencia de SQL Server y otras bases de datos, Access no me permite realizar consultas múltiples en una sola sentencia. En concreto ...
  #1 (permalink)  
Antiguo 12/06/2006, 04:42
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Consulta múltiple en Access

Muy buenas. A diferencia de SQL Server y otras bases de datos, Access no me permite realizar consultas múltiples en una sola sentencia. En concreto lo que quiero es insertar un nuevo registro e inmediatamente seleccionar el valor de una campo númerico (no autonumérico).

la consulta sería esta:
Código:
INSERT INTO Entrada (Fecha, Num,Partes,Pro,Rem,Tipo,Res,Obs) VALUES('12/06/2006',(SELECT (MAX(Num)+1) FROM Entrada),'','Álava','','TRABAJO','','');SELECT (MAX(Num)) FROM Entrada
Y el error: Se encontraron caracteres después del final de la instrucción SQL

El campo Num es numérico pero no puedo hacerlo autonumérico por otras cuestiones que no voy a detallar. No sé si se puede hacer una especie de subconsulta.

¿Alguna idea?

Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #2 (permalink)  
Antiguo 12/06/2006, 05:02
Avatar de Worp9975  
Fecha de Ingreso: mayo-2006
Ubicación: LV-426
Mensajes: 203
Antigüedad: 17 años, 10 meses
Puntos: 1
Ese error que comentas parece el típico error que sale cuando alguna cadena entrecomillada no está correctamente cerrada. Comprueba los tipos en los campos de la tabla y los valores que pasas en la claúsula VALUES.

Salu2
  #3 (permalink)  
Antiguo 12/06/2006, 05:32
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
No, no, la cadena está perfectamente. Si separo las dos consultas, es decir INSERT y SELECT funcionan perfectamente. Se trata de que Access no me admite sentencias múltiples como sí hace por ejemplo SQL Server.

Por tanto, la inserción de un nuevo registro y la consulta al valor del campo Num del nuevo registro se deberían hacer en una sola sentencia.

Debe ser así, porque el programa que realiza la consulta abre una sola conexión por consulta sin que ésta permanezca abierta para más consultas. Por tanto, si coinciden en el tiempo la inserción de varios registros a la vez por distintos usarios, podría obtener valores del campo Num que no se correspondieran con el del registro insertado en el proceso.

Para esto SQL Server dispone de INSERT INTO....;SELECT @@IDENTITY pero no en Access.

Gracias de todas formas.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #4 (permalink)  
Antiguo 12/06/2006, 07:30
Avatar de Worp9975  
Fecha de Ingreso: mayo-2006
Ubicación: LV-426
Mensajes: 203
Antigüedad: 17 años, 10 meses
Puntos: 1
Puedes hacerlo con VBA ,

declarate una variable de tipo numérico y guardas en ella el valor de ese sentencia SELECT que quieres antes de lanzar el INSERT

Después lanzas la INSERT .

Salu2
  #5 (permalink)  
Antiguo 12/06/2006, 07:49
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Ummm... vamos a ver. estoy programando en ASP.Net y ADO.Net.

He estado probando la siguiente sentencia simple, independientemente de obtener el último número:

Código:
INSERT INTO Entrada (Fecha,Num,Partes,Pro,Rem,Tipo,Res,Obs) VALUES ('12/06/2006',(SELECT (MAX(Num)+1) FROM Entrada),'1','Madrid','','TRABAJO','Resumen','Observaciones')
y me devuelve un error no especificado. Supongo que es por la subconsulta, aunque no sé porqué está mal.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 15:51.