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

alguien sabe corregir esta consulta

Estas en el tema de alguien sabe corregir esta consulta en el foro de ASP Clásico en Foros del Web. [c] sql1 = "SELECT * FROM Mesa1" rs.Open sql1, conexion, 3, 3 TK = Request.Form("TK") Mesa = Request.Form("Mesa") Cantidad = Request.Form("Cantidad") subcatagory = Request.Form("subcatagory") sql11 ...
  #1 (permalink)  
Antiguo 16/08/2004, 10:50
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 19 años, 10 meses
Puntos: 0
alguien sabe corregir esta consulta

[c]
sql1 = "SELECT * FROM Mesa1"
rs.Open sql1, conexion, 3, 3

TK = Request.Form("TK")
Mesa = Request.Form("Mesa")
Cantidad = Request.Form("Cantidad")
subcatagory = Request.Form("subcatagory")

sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad ) VALUES ('" & request("TK") & "', '" & request("subcatagory") & "', '" & request("Mesa") & "', '" & request("Cantidad") & "') AND Mesa1 (Valor) SELECT Tabla2.Valor FROM Tabla2 Where subcatagory = '"&request("subcatagory")&"'"
[/c]


cuabdo ejecuto esta consulta me dice: "Falta punto y coma (;) al final de la instrucción SQL " y cuando se lo coloco me dice se esperaba fin de la instruccion supongo que la consulta esta mal planteada o hay un problema de sintaxis pero no me doy cuenta si alguien me puede ayudar corrigiendola se lo agradezco ya que soy nuevo en esto.
  #2 (permalink)  
Antiguo 16/08/2004, 10:53
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
¿Puedes colocar un response.write sql11 y postear el resultado?
  #3 (permalink)  
Antiguo 16/08/2004, 11:00
 
Fecha de Ingreso: marzo-2004
Mensajes: 41
Antigüedad: 20 años, 3 meses
Puntos: 0
que intentas conseguir??..la comparacion del where lo debes hacer con like no con = ...
los parametros del formulario los pasas como get o como post??
  #4 (permalink)  
Antiguo 16/08/2004, 11:09
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 19 años, 10 meses
Puntos: 0
con post, lo que intento es insertar los valores de un formulario y el valor de un campo que esta en otra tabla, en un mismo registro pero en otra tabla, por favor de saber como se hace me puedes encribir la consulta ya que soy nuevito en esto, gracias
  #5 (permalink)  
Antiguo 16/08/2004, 11:10
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 19 años, 10 meses
Puntos: 0
MyAkire dame un ejemplo porque no se mucho de esto
  #6 (permalink)  
Antiguo 16/08/2004, 11:14
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Dices que el error es de sintaxis, es de mucha ayuda poder ver la consulta formada y con las variables:


sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad ) VALUES ('" & request("TK") & "', '" & request("subcatagory") & "', '" & request("Mesa") & "', '" & request("Cantidad") & "') AND Mesa1 (Valor) SELECT Tabla2.Valor FROM Tabla2 Where subcatagory = '"&request("subcatagory")&"'"

Es mucho mas facil detectar el error si imprimes despues de esa linea el contenido de sql11 (tu variable) con un simple response.write.
Copias ese desplegado y postealo aqui para poder verlo. Tambien es de utilidad que necionen que campos son de que tipo.

Espero tu siguiente post.

Saludos
  #7 (permalink)  
Antiguo 16/08/2004, 11:15
 
Fecha de Ingreso: marzo-2004
Mensajes: 41
Antigüedad: 20 años, 3 meses
Puntos: 0
primero haces la select
SELECT Tabla2.Valor FROM Tabla2 Where subcatagory LIKE '"&request("subcatagory")&"'"

y rs(0) es el valor que necesitas y luego haces el insert con otro recordset

sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad,Valor ) VALUES ('" & request("TK") & "', '" & request("subcatagory") & "', '" & request("Mesa") & "', '" & request("Cantidad") & "','"&rs(0)"')
  #8 (permalink)  
Antiguo 16/08/2004, 11:22
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 19 años, 10 meses
Puntos: 0
soy medio duro disculpa no entiendo lo de rs(0)
  #9 (permalink)  
Antiguo 16/08/2004, 11:23
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 19 años, 10 meses
Puntos: 0
perdona que moleste tanto como seria el codigo completo con el recordset
  #10 (permalink)  
Antiguo 16/08/2004, 11:28
 
Fecha de Ingreso: marzo-2004
Mensajes: 41
Antigüedad: 20 años, 3 meses
Puntos: 0
sql1 = "Mesa1 (Valor) SELECT Tabla2.Valor FROM Tabla2 Where subcatagory LIKE '"&request("subcatagory")&"'"
rs.Open sql1, conexion, 3, 3

RS ES EL PRIMER RECORSET..SI TU PONES RS(0) ES EL VALOR DE LA PRIMERA COLUMNA QUE TE DEVUELVE LA SELECT COMO SOLO QUIERES EL VALOR DEL CAMPO "VALOR" RS(0 ) ES ESE VALOR, SI HICIERAS SELECT * rs(0) es la primera columna, rs(1) la segunda y asi sucesivamente. AHORA TE ABRES OTRO RECORSET Y HACES LA SIGUIENTE SQL

sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad,Valor) VALUES ('" & request("TK") & "', '" & request("subcatagory") & "', '" & request("Mesa") & "', '" & request("Cantidad") & "','"&rs(0)&'")

rs1.Open sql11, conexion, 3, 3
  #11 (permalink)  
Antiguo 16/08/2004, 11:36
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 19 años, 10 meses
Puntos: 0
me da el siguiente error:
[c]

Error de compilación de Microsoft VBScript (0x800A03EA)
Error de sintaxis
/insert.asp, line 31, column 200
sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad,Valor) VALUES ('" & request("TK") & "', '" & request("subcatagory") & "', '" & request("Mesa") & "', '" & request("Cantidad") & "','"&rs(0)&'")
[/c]
le puse la doble comilla al final y tambien me dice el mismo error
como genero dos recordset con una conexion ?
  #12 (permalink)  
Antiguo 16/08/2004, 11:40
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Pues asi, dos variables recordset independientes a una sola conexión.
Los errores siguen siendo de sintaxis, pero no quieres postear el contenido de la variable. Así no.
  #13 (permalink)  
Antiguo 16/08/2004, 11:44
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 19 años, 10 meses
Puntos: 0
tambien en rs(4)le puse cuatro ya que la columna valor es la cuarta
perome dice el mismo error
  #14 (permalink)  
Antiguo 16/08/2004, 11:47
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 19 años, 10 meses
Puntos: 0
[c]
set conexion = Server.CreateObject("ADODB.Connection")
set rs = Server.CreateObject("ADODB.RecordSet")
set rs1= Server.CreateObject("ADODB.RecordSet")
conexion.Open("Provider=Microsoft.Jet.OLEDB.4.0;Da ta Source=" & Server.MapPath("db2.mdb"))

[/c]
asi es alo que te refieres con dos variables recordset independientes a una sola conexion.
No es que no quiera postearlo no me doy cuenta de como hacerlo
  #15 (permalink)  
Antiguo 16/08/2004, 12:00
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Bueno, entonces vamos por partes:

Puedes tener varios objetos recordset dependientes a una sola conexion sin problemas, por ejemplo:
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Mode=3
oConn.Open ("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db2.mdb"))
Set oRS1 = Server.createobject("ADODB.Recordset")
Set oRS2 = Server.createobject("ADODB.Recordset")
oRs1.Open "select * from tabla1",oConn
oRs2.Open "select * from tabla2",oConn

Y para poder ver en el navegador al consulta que estas formando, pues tienes que hacer esto:
<%
... 'tu código asp
sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad,Valor) VALUES ('" & request("TK") & "', '" & request("subcatagory") & "', '" & request("Mesa") & "', '" & request("Cantidad") & "','"&rs(0)&'")
response.write sql11
'rs1.Open sql11, conexion, 3, 3 'Esta linea la comentas para que no te truene. O cambialo por un select * from tabla para que corra, no te importen los resultados, el chiste es ver lo que se esta formando.
  #16 (permalink)  
Antiguo 16/08/2004, 12:14
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 19 años, 10 meses
Puntos: 0
lo postie e igual me dice erro de sintaxis sobre sql11
  #17 (permalink)  
Antiguo 16/08/2004, 12:28
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Bueno, entonces vamos a adivinar:

Código:
sql1 = "SELECT * FROM Mesa1"   'Supongo este es tu primer select
rs.Open sql1, conexion, 3, 3
sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad,Valor) VALUES ('" & request("TK") & "', '" & request("subcatagory") & "', '" & request("Mesa") & "', '" & request("Cantidad") & "','"&rs(0)&'")
rs2.Open sql11, conexion, 3, 3
Supongo que Cantidad y valor son numéricos, entonces sebe de ir así:

sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad,Valor) VALUES ('" & request("TK") & "', '" & request("subcatagory") & "', '" & request("Mesa") & "', " & request("Cantidad") & ","&rs(0)&")"
rs2.Open sql11, conexion, 3, 3
  #18 (permalink)  
Antiguo 16/08/2004, 12:36
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 19 años, 10 meses
Puntos: 0
exacto, pero lo primer consulta es:

sql1 = "Mesa1 (Valor) SELECT Tabla2.Valor FROM Tabla2 Where subcatagory LIKE '"&request("subcatagory")&"'"
response.write sql1
rs.Open sql1, conexion, 3, 3

no deberia in un select o algo delante de Mesa1, recuarda que lo que trata de hacer sql1 es tomar el valor del campo "valor" correpondiente a valor de subcatagory que se seleccionado de un formulario

y sql11 inserta los datos del formulario mas el valor del campo "Valor" correpondiente a valor de subcatagory que se seleccionado de un formulario, asi todo queda en un registro

el error ahora es por eso que sql1 no comienza con insert select o update,
  #19 (permalink)  
Antiguo 16/08/2004, 12:49
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 19 años, 10 meses
Puntos: 0
bueno pasando a limpio queda supongo asi:

Set conexion = Server.CreateObject("ADODB.Connection")
conexion.Mode=3
conexion.Open("Provider=Microsoft.Jet.OLEDB.4.0;Da ta Source=" & Server.MapPath("db2.mdb"))
Set rs = Server.createobject("ADODB.Recordset")
Set rs1 = Server.createobject("ADODB.Recordset")



TK = Request.Form("TK")
Mesa = Request.Form("Mesa")
Cantidad = Request.Form("Cantidad")
subcatagory = Request.Form("subcatagory")

sql1 = "SELECT Valor FROM Tabla2 Where subcatagory LIKE '"&request("subcatagory")&"'"
response.write sql1
rs.Open sql1, conexion, 3, 3

sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad, Valor) VALUES ('" & request("TK") & "', '" & request("subcatagory") & "', " & request("Mesa") & ", " & request("Cantidad") & ", "&rs(4)&")"
response.write sql11
rs1.Open sql11, conexion, 3, 3
[/c]
perdona tanta molestia pero el error ahora dice asi:
ADODB.Recordset (0x800A0CC1)
No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido.
/insert.asp, line 32

la linea 32 hace referencia a sql11 pero creo que lo que no encuentra es el valor de rs(4)
perdon si te he mareado
  #20 (permalink)  
Antiguo 16/08/2004, 12:49
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Así es, debes cambiarlo por:
sql1 = "SELECT Valor FROM Tabla2 Where subcatagory LIKE '"&request("subcatagory")&"'"

y de paso, ya que sabemos el nombre, cambiemos sql11:
sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad,Valor) VALUES ('" & request("TK") & "', '" & request("subcatagory") & "', '" & request("Mesa") & "', " & request("Cantidad") & ","&rs("valor")&")"

No se si observaste que quitamos los apostrofes de sql11 para hacer que se tomen como numéricos.

Espero tus comentarios de como te va.
  #21 (permalink)  
Antiguo 16/08/2004, 12:52
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Lo posteamos a la misma hora

El error es por que tienes:
sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad, Valor) VALUES ('" & request("TK") & "', '" & request("subcatagory") & "', " & request("Mesa") & ", " & request("Cantidad") & ", "&rs(4)&")"

Ya no hay un campo en rs que coincida con la posición cinco (0,1,2,3 y 4).

Usa mejor el nombre (Valor):

sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad, Valor) VALUES ('" & request("TK") & "', '" & request("subcatagory") & "', " & request("Mesa") & ", " & request("Cantidad") & ", "&rs("valor")&")"

Saludos
  #22 (permalink)  
Antiguo 16/08/2004, 13:04
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 19 años, 10 meses
Puntos: 0
me dice el mismo error y los campos el de tabla2.Valor(tabla origen) y el de Mesa1.Valor(Tabla destino) son iguales estan como numero decimal, formato currency.
  #23 (permalink)  
Antiguo 16/08/2004, 13:14
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Vuelve a poner tu codigo para ver las modificaciones
  #24 (permalink)  
Antiguo 16/08/2004, 13:21
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 19 años, 10 meses
Puntos: 0
Dim conexion
Dim rs
Dim rs1

Set conexion = Server.CreateObject("ADODB.Connection")
conexion.Mode=3
conexion.Open("Provider=Microsoft.Jet.OLEDB.4.0;Da ta Source=" & Server.MapPath("db2.mdb"))
Set rs = Server.createobject("ADODB.Recordset")
Set rs1 = Server.createobject("ADODB.Recordset")


TK = Request.Form("TK")
Mesa = Request.Form("Mesa")
Cantidad = Request.Form("Cantidad")
subcatagory = Request.Form("subcatagory")

sql1 = "SELECT Valor FROM Tabla2 Where subcatagory = '"&request("subcatagory")&"'"
response.write sql1
rs.Open sql1, conexion, 3, 3

sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad, Valor) VALUES ("&request("TK")&", '"&request("subcatagory")&"', "&request("Mesa")&", "&request("Cantidad")&", "&rs(Valor)&")"
response.write sql11
rs1.Open sql11, conexion, 3, 3

conexion.close
set conexion=nothing


modifique TK que tambien es numerico
  #25 (permalink)  
Antiguo 16/08/2004, 13:28
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
rs(Valor) es rs("Valor")
  #26 (permalink)  
Antiguo 16/08/2004, 13:36
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 19 años, 10 meses
Puntos: 0
tienes razon y funciono perfectamente, ultima pregunta y prometo no molestar mas, como hago si subcatagory que es una lista en el formulario, seleccionan dos item de esta lista,
precisaria que por cada subcatagory genere n registros con los demas valores iguales salvo obviamente el valor de campo "valor" asi luego puedo sumarlos
se que se deberia usar un "for each" pero no se como.
  #27 (permalink)  
Antiguo 16/08/2004, 14:03
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
jeje, no creo que sea tu última duda, por que ahora acabas de preguntar algo que es muy frecuente en estos foros y como que no siempre queda claro a la primera.

A ver, al hacer esta linea subcatagory = Request.Form("subcatagory"), si por alguna razon el elemento Request.Form("subcatagory") trae mas de un valor, se asignarán todos los valores saparados por comas.
Ejemplo. 129, 435, 345, etc.

Lo que se hace normalmente es separarlos con un split. Esto te generara un arreglo asi:
vector = split(subcatagory, ",")
'donde vector(0) tiene 129, vector(1) tiene 435, etc.

Entonces debes de hacer un ciclo For de cero a limite del arreglo: For i=0 to UBound(vector)

Y dentro del ciclo hacer lo que tengas que hacer en cada iteración.

Con for Each se puede ir tomando los valores de diferentes controles de igual forma. Esto se puede hacer por nombre o por índice:

for each control in request.form
for indice=1 to request.form(control).count
Esto te regresa todos los controles del formulario


o bien for each control in request.form("nomcontrol")
Esto te regresa todos los controles que se llamen nomcontrol

Como ves todo se puede en este lenguaje y normalmente de mas de una forma.
Chécalo y pregunta, jejeje
  #28 (permalink)  
Antiguo 16/08/2004, 14:15
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 19 años, 10 meses
Puntos: 0
tienes razon, el tema es que esos ejemplo te lo pone en u mismo registro separados por "," y yo precisaria que genere distintos registros pero con el mismo Tk, cantidad y mesa pero el valor debe ser distinto para cada subcatagory(ya que han seleccionado diferentes item)
y no se como ajustarlo a la consulta insert y select cuando eligen dos o mas item en la lista del formulario llamada subcatagory
  #29 (permalink)  
Antiguo 16/08/2004, 14:24
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 19 años, 10 meses
Puntos: 0
yo antes de poder insertar el valor correpondiente a subcatagory lo hacia asi,
de esta forma cuando seleccionan mas de un item generaba un registro por cada subcatagory seleccionado con los mismos valores pertenecientes a TK, Cantidad y Mesa pero ahora con las consultas no se, por que supongo que tambien debo aclararlo para la consulta sql1(por el campo valor que va tener que relacionar n valores correspondiente a n subcatagorys) y sql11 (para que genere n registros correspondiente a n subcatagory)



For Each i in Request.Form("subcatagory")
rs.addnew
rs("subcatagory") = i
rs("TK") = TK
rs("Mesa") = Mesa
rs("Cantidad") = Cantidad
rs.update
Next
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 19:30.