Foros del Web » Programando para Internet » ASP Clásico »

Insert into

Estas en el tema de Insert into en el foro de ASP Clásico en Foros del Web. Hola tengo problemas con una subconsulta, ya he probado todo lo que se me ocurre, estoy intentando hacer este insert: strSQL = "insert into Medico ...
  #1 (permalink)  
Antiguo 11/12/2009, 09:05
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 15 años, 6 meses
Puntos: 2
Insert into

Hola tengo problemas con una subconsulta, ya he probado todo lo que se me ocurre, estoy intentando hacer este insert:

strSQL = "insert into Medico (IdClinica, Nombre, Apellido) values (select Id_Clinica FROM Clinica where IdGrupo = " & int(Session("Id")) & ",'" & Request.Form("Nombre") & "','" & request.Form("Apellido") & "')"


Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error. in query expression 'select Id_Clinica FROM Clinica where IdGrupo = 26'.

he colocado el select entre 'select' tambien '(select)' cuando reemplazo el select por el id de la clinica manualmente, inserta bien, tambien he probado el select solo y funciona bien, supongo que debe ser algo en la sintaxis de la subconsulta pero no encuentro el error.

gracias
  #2 (permalink)  
Antiguo 11/12/2009, 11:34
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Insert into

Solucione mi problema haciendo antes la consulta select, almacenandola en una variable IdClinica y despues insertarlo con insert into values.

Aunque me funciona bien estoy haciendo una consulta de mas que creo me podria ahorrar, si alguien sabe una solucion mas practica con un solo acceso a la bd, se lo agradeceria.

encontre este ejemplo, no se si funciona, pero solo inserta campos de una o varias tablas en otra, lo que yo quero es combinar seleccion de campos de una tabla con valores enviados por formulario.

insert into PRODUCTOS_ATRIBUTOS
(CodigoTipo,CodigoSubtipo,Descripcion)
select
(select CodigoTipo
from PRODUCTOS_TIPOS PT
where PT.Descripcion='cd'),
(select CodigoSubtipo
from PRODUCTOS_SUBTIPOS PS
where PS.Descripcion='album'),
'nuevo atributo'

Este codigo si me funciono pero solo inserta un solo campo, lo ingresado por formulario no queda almacenado

strSQL = "insert into Medico (IdClinica) select Id_Clinica FROM Clinica where IdGrupo = " & int(Session("Id"))
  #3 (permalink)  
Antiguo 14/12/2009, 08:35
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Insert into

Nadie? cualquier sugerencia?
  #4 (permalink)  
Antiguo 14/12/2009, 14:29
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 2 meses
Puntos: 146
Respuesta: Insert into

A ver ...

si mal no recuerdo para hacer un insert dependiendo de un query la sintaxis es :

Cita:
INSERT INTO Tabla SELECT Campos FROM .... etc etc
No defines los campos en el Insert, sino que se supone que el select debe tener la estructura de la tabla a la que se insertaran los registros, esto es muy rápido si, pero deja rígida la estructura, haciendo que si se agregan o quitan campos, hay que modificar el código fuente.
  #5 (permalink)  
Antiguo 14/12/2009, 14:56
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Insert into

Gracias Myakire, tienes razon pero en parte, si tu tabla tiene exactamente la misma estructura que quieres guardar, no es necesario definir los campos, solo se coloca los que quieres guardar ej:
si mi tabla es
id_Usuario
Nombre
Apellido

e inserto: como variables o desde un form

strSQL = "insert into Medico (Id, Nom, Ape) where....

esto estaria bien, pero si quiero guardar solo parte de la astructura, por ej: si el Id_Usuario es autonumerico, seria:

strSQL = "insert into Medico (Nombre, Apellido) values (Nom, Ape) where....

Si te das cuenta el campo Id_Usuario no se coloca, pero como la estructura de la tabla es diferente a lo que se quiere insertar se utiliza esta otra sentencia.

Ahora, lo que yo quiero es combinar la insecion de registros con una subconsulta, es buscar un dato entre dos tablas relacionadas, traer el Id de la llave primaria como una subconsulta e insertarla en la segunda tabla con unos valores capturados por medio de un form.

me explico:

Tengo 2 tablas: Clinica y Medico

Clinica:
Id_Clinica
Nombre
Dir

Medico:
Id_Medico
IdClinica
Nombre
Apellido

en un formulario anterior se han insertado las clinicas correctamente, el Id_Clinica es autonumerico, luego para insertar un nuevo medico, capturo nombre y apellido con un form hasta alli todo bien, intento ir a la tabla clinica y traer el id_Clinca para insertarlo en Medico con los otros datos, he aqui el problema.

Estoy tratando de hacerlo con una sub consulta y no he podido.

En lo que tienes razon, es que al hacerlo asi, si cambia la estructura de la tabla, tambien debo cambiar la consulta (es lo que te entiendo) y debe ser asi, o como lo haces tu? para aprender un poco mas.

Gracias.
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




La zona horaria es GMT -6. Ahora son las 00:24.