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

Myakire o alguien que pueda ayudarme please help!!!!!!

Estas en el tema de Myakire o alguien que pueda ayudarme please help!!!!!! en el foro de ASP Clásico en Foros del Web. jejeje, te voy a decir como les decía a mis alumnos de la Universidad: "No se trata de que marque menos errores, sino de arreglar ...

  #31 (permalink)  
Antiguo 18/08/2004, 10:00
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
jejeje, te voy a decir como les decía a mis alumnos de la Universidad: "No se trata de que marque menos errores, sino de arreglar los que te van apareciendo". Es que al compilar les maracban 500 errores y hacian cosas extrañas en el código con tal de que marcara solo 200, jejeje.

El código debería estar así:
Código:
Dim conexion
Dim rs
Dim rs1

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

sql="insert into NTK (TK) values ('" & request("TK") & "')"
conexion.Execute(sql)

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

response.write subcatagory & "<br>" 'Este desplegado es para verificar que llegan valores del formulario, con uno que llegue debe de entrar al for e insertar por lo menos uno. Si no llegan en por que seguro se llama diferente el campo en el otro programa.

vector = split (subcatagory,",")
for i=0 to UBound(vector)

sql1 = "SELECT Valor FROM Tabla2 Where subcatagory = '"&vector(i)&"'"
rs.Open sql1, conexion, 3, 3

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

response.write sql11

Next
conexion.close
set conexion=nothing
Checalo, si sigue sin correr, pon el código de los dos programas para ver que esta mal.
  #32 (permalink)  
Antiguo 18/08/2004, 10:11
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 0
Es que en la desesperacion uno trata de hacer algo, jeje, bueno el error que me marca ahora es este y chequie los nombres y estan bien
La operación no está permitida si el objeto está abiertors."rs.Open sql1, conexion, 3, 3"
  #33 (permalink)  
Antiguo 18/08/2004, 10:19
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
¿No tienes abierto el Access al mismo tiempo de hacer las pruebas?
  #34 (permalink)  
Antiguo 18/08/2004, 10:26
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 0
nop, creo que el codigo tomo vida y esta en contra mio, jeje
  #35 (permalink)  
Antiguo 18/08/2004, 10:29
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 3 meses
Puntos: 535
Hey, disculpas por mi intromición (mas que nada porque no he leído el tema completo).. pero hay algo que me llama la atención:


Cita:
La operación no está permitida si el objeto está abiertors."rs.Open sql1, conexion, 3, 3"


Código:
for i=0 to UBound(vector)
   '...
   rs.Open sql1, conexion, 3, 3
   '...
   rs1.Open sql11, conexion, 3, 3
   '...
Next
rs y rs1 se abre por cada iteración del vector... eso ¿se puede?

Pa'mi que antes del next tendrías que colocar:


Código:
for i=0 to UBound(vector)
   '...
   rs.Open sql1, conexion, 3, 3
   '...
   rs1.Open sql11, conexion, 3, 3
   '...
   rs.Close
   set rs = nothing
   rs1.Close
   set rs1 = nothing
Next
__________________
...___...

Última edición por AlZuwaga; 18/08/2004 a las 10:30
  #36 (permalink)  
Antiguo 18/08/2004, 10:31
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
jejeje, no es eso, es que tambien yo me "apentonto" de repente, el problema es que tenemos el rs.Open dentro del for, entonces no nos permite llenar el mismo recordset con muchos cursores diferentes. Hat que cerrarlos en el mismo ciclo después de ocuparlos:

rs.Close y rs1.Close
  #37 (permalink)  
Antiguo 18/08/2004, 10:32
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
mmmmm, Dazuaga se me adelantó, pero esa es la idea.
  #38 (permalink)  
Antiguo 18/08/2004, 10:57
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 0
tenian razon, pero ahora me dice que no coinciden los tipo en la consulta sgte:

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

que yo lo cambie por esto:

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

pero me dice lo mismo y en la tabla los campo estan como numericos(long integer) y subcatagory (texto)
  #39 (permalink)  
Antiguo 18/08/2004, 11:04
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 0
el codigo a quedado asi:

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

response.write subcatagory & "<br>"

vector = split (subcatagory,",")
for i=0 to UBound(vector)

sql1 = "SELECT Valor FROM Tabla2 Where subcatagory = '"&vector(i)&"'"
rs.Open sql1, conexion, 3, 3

rs.Close
set rs = nothing

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

response.write sql11

rs1.Close
set rs1 = nothing

Next
conexion.close
set conexion=nothing

ya que si cierro los dos recordset junto me dice que la operacion no es validad si el objeto esta cerrado.
  #40 (permalink)  
Antiguo 18/08/2004, 11:07
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
A ver, comenta la linea del open (que ahora que lo pienso debería ser un Conexion.Execute(Sql11), ya que no regresamos cursor, pero bueno), para que el response.write sql11 que recuerdo tienes, depliegue la consulta formada, tal ves hay un caracter incorrecto, o algo por el estilo.
Postea la consulta que se forma para ver como esta.
  #41 (permalink)  
Antiguo 18/08/2004, 11:07
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 0
no hay problema dazuaga todo aporte sirve
  #42 (permalink)  
Antiguo 18/08/2004, 11:09
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
posteamos al mismo tiempo. ¿Ya checaste lo del response.write?
  #43 (permalink)  
Antiguo 18/08/2004, 11:15
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 0
lo hice pero igualmente me dice no coinciden los tipos y tambien lo prove con conexion.execute(sql11) y lo mismo
las dos consultas son:

sql1 = "SELECT Valor FROM Tabla2 Where subcatagory = '"&vector(i)&"'"
rs.Open sql1, conexion, 3, 3

rs.Close
set rs = nothing

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

response.write sql11

rs1.Close
set rs1 = nothing

Next
conexion.close
set conexion=nothing
  #44 (permalink)  
Antiguo 18/08/2004, 11:20
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 0
si lo pongo asi solo funciona para una seleccion en el menu de lista llamado subcatagory

vector = split (subcatagory,",")
for i=0 to UBound(vector)

sql1 = "SELECT Valor FROM Tabla2 Where subcatagory = '"&vector(i)&"'"
rs.Open sql1, conexion, 3, 3
conexion.execute(sql1)
'rs.Close
'set rs = nothing

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

'rs1.Close
'set rs1 = nothing

Next
conexion.close
set conexion=nothing
  #45 (permalink)  
Antiguo 18/08/2004, 11:23
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Hazlo así:

Código:
for i=0 to UBound(vector)
sql1 = "SELECT Valor FROM Tabla2 Where subcatagory = '"&vector(i)&"'"
rs.Open sql1, conexion, 3, 3
rs.Close
sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad, Valor) VALUES ("&TK&", '"&vector(i)&"', "&Mesa&", "&Cantidad&", "&rs("Valor")&")"
'conexion.execute(sql11)
response.write sql11
Next
Ojo, los .Execute solo se usan para ejecutar consultas que NO regresan datos, como los Insert o los Delete.

Última edición por Myakire; 18/08/2004 a las 11:24
  #46 (permalink)  
Antiguo 18/08/2004, 11:26
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 0
el resultado del posteo es el sgt:
calabresa
INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad, Valor) VALUES (34, 'calabresa', 1, 1, 13)
pero si selecciono mas de un item en el menu de lista me dice "La operación no está permitida si el objeto está abierto" si les saco las comillas simples al rs.clos....
me dice no coinciden los tipos


aclaracion en sql1 no iria como conexion.execute
  #47 (permalink)  
Antiguo 18/08/2004, 11:30
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
¿Dices que esto te truena con dos elementos?

Código:
for i=0 to UBound(vector)
sql1 = "SELECT Valor FROM Tabla2 Where subcatagory = '"&vector(i)&"'"
rs.Open sql1, conexion, 3, 3
sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad, Valor) VALUES ("&TK&", '"&vector(i)&"', "&Mesa&", "&Cantidad&", "&rs("Valor")&")"
'conexion.execute(sql11)
rs.Close 'Notese el cambio de posición
response.write sql11
Next
  #48 (permalink)  
Antiguo 18/08/2004, 11:37
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 0
recien lo hice pero me dice ocurrio una excepcion en sql11

de la manera que funciona pero par una seleccion es:
vector = split (subcatagory,",")
for i=0 to UBound(vector)

sql1 = "SELECT Valor FROM Tabla2 Where subcatagory = '"&vector(i)&"'"
rs.Open sql1, conexion, 3, 3


sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad, Valor) VALUES ("&request("TK")&", '"&vector(i)&"', "&request("Mesa")&", "&request("Cantidad")&", "&rs("Valor")&")"
conexion.execute(sql11)
response.write sql11

Next

si con este codigo selecciona mas de un item me dice"la operacion no esta permitida si el objeto esta abierto " en linea 33 que es rs.open sql1.....


si le pongo debajo de rs.open....
rs.close me dice ocurrio una excepcion en sql11
  #49 (permalink)  
Antiguo 18/08/2004, 11:40
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 0
cambiando el rs.close de posicion el codigo funciona para una seleccion pero no para mas de una cuando selecciono dos item en el menu de lista me dice ocurrio una excepxion en sql11
  #50 (permalink)  
Antiguo 18/08/2004, 11:49
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 0
cuando aparece el error de "ocurrio una excepxion" en sql11 (que es cuando se selecciona mas de un item en el menu de lista)

en la db igualemnte se insertan los valores relacionados con el primer item seleccionado en el menu de lista.

podra ser (desde mi humilde posicion) que la primer consulta(sql1) no trae todos los valores relacionados a los item que se seleccionan solo sigue trayendo el primero
  #51 (permalink)  
Antiguo 18/08/2004, 12:11
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Disculpa, pero de los tres post que escribiste, no entendí ninguno.

Código:
for i=0 to UBound(vector)
sql1 = "SELECT Valor FROM Tabla2 Where subcatagory = '"&vector(i)&"'"
rs.Open sql1, conexion, 3, 3
sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad, Valor) VALUES ("&TK&", '"&vector(i)&"', "&Mesa&", "&Cantidad&", "&rs("Valor")&")"
'conexion.execute(sql11)
rs.Close 
response.write sql11 & "<br>" 
Next
Este código, tal cual, sin cambiarle nada, ¿funciona para uno, para más de uno?, Nada mas debe de imprimirte tantos "INSERT .... " como elementos haz seleccioando.
Si te truena, copia y pega el error que te pone en el navegador completo, por que eso de "ocurrio una excepcion en sql11", no me sirve.

Última edición por Myakire; 18/08/2004 a las 12:12
  #52 (permalink)  
Antiguo 18/08/2004, 13:59
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 0
Ok no hay problema, hice como me digistes pero sale este error cuando selecciono dos item o mas del menu de lista en el form pero si selecciono un item solo del menu de lista funciona bien.
error:

Información técnica (para personal de soporte técnico)

Tipo de error:
(0x80020009)
Ocurrió una excepción.
/insert.asp, line 33

line 33 es donde esta escrita la consulta de sql11 = "INSERT.....
  #53 (permalink)  
Antiguo 18/08/2004, 14:14
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
A ver ¿qué te da esto?
for i=0 to UBound(vector)
sql1 = "SELECT Valor FROM Tabla2 Where subcatagory = '"&vector(i)&"'"
rs.Open sql1, conexion, 3, 3
Response.write sql1 & " = " & rs("Valor") &" <br>"
'sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad, Valor) VALUES ("&TK&", '"&vector(i)&"', "&Mesa&", "&Cantidad&", "&rs("Valor")&")"
'conexion.execute(sql11)
rs.Close
'response.write sql11 & "<br>"
Next
  #54 (permalink)  
Antiguo 18/08/2004, 14:19
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 0
si selecciono solo un item del menu de lista me da esto:
el posteado me da esto
SELECT Valor FROM Tabla2 Where subcatagory = 'calabresa' = 13

si selecciono mas de uno el erro que te mencione antes
  #55 (permalink)  
Antiguo 18/08/2004, 14:30
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Código:
SELECT Valor FROM Tabla2 Where subcatagory = 'calabresa' = 13
¿ Qué es ese "= 13" ?
¿de donde lo esta tomado?
¿Qué es lo que tiene (imprímelo) request("subcatagory"), es decir, el origen del vector?
  #56 (permalink)  
Antiguo 18/08/2004, 14:43
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 0
calabresa es uno de las tantas opciones que trae el menu de lista y el nro 13 es el valor que trae la consulta relkacionado con el item seleccionado
lo que nunca te comente que el menu de lista dependen de otro menu de lista ej:
el form tiene dos menu de lista uno se llama articulo y el otro subcatagory
son listas dependientes subcatagory depende de articulos ambos se llenan a traves de una conexion en asp y un java script


este es el codigo de ambos solo que a mi no me interesa traer el valor de el primer menu de lista(articulos)por eso nunca lo mensione

viene la conexion de asp luego un scrip de java para vincular los menu de lista y luego los select

<select size="10" id="Articulos" name="Articulos" onChange = "javascript:sublist(this.form, Articulos.value);">
<option selected>Articulos</option>
<%fsql = "Select distinct ID, Articulos from Tabla1"
rs.Open fsql, conexion
do while not rs.eof
%>
<option value="<%=rs("ID")%>"><%=rs("Articulos")%></option>
<%
rs.movenext
loop
rs.close
set rs=nothing
conexion.close
Set conexion=nothing
%>
</select>
</p>
<p>
<select id="subcatagory" name="subcatagory" size="10" multiple >
<option selected value="none"></option>
</select>
  #57 (permalink)  
Antiguo 18/08/2004, 15:05
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 0
sql1 = "SELECT Valor FROM Tabla2 Where subcatagory = '"&vector(i)&"'"
rs.Open sql1, conexion, 3, 3
Response.write sql1 & " = " & rs("Valor") &" <br>"


es como si esta consulta despues del primer item seleccionado en el menu de lista no trajera los valores relacionados con lo otros item(es decir a partir del segundo item seleccionado en el menu de lista)
  #58 (permalink)  
Antiguo 18/08/2004, 17:45
 
Fecha de Ingreso: agosto-2004
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 0
Myakire, pude solucionarlo se me courrio probar con For en vez de con la funcion split
y funciono. que do asi (lo dejo para que lo puedan aprovechar ya que como tu dices este tema es muy preguntado en el foro)
TK = Request.Form("TK")
Mesa = Request.Form("Mesa")
Cantidad = Request.Form("Cantidad")
subcatagory= Request.Form("subcatagory")

FOR i = 1 to request.form("subcatagory").count
sql1 = "SELECT Valor FROM Tabla2 Where subcatagory = '"&request("subcatagory").item(i)&"' "
rs.Open sql1, conexion, 3, 3

Response.write sql1 & " = " & rs("Valor") &" <br>"

sql11 = "INSERT INTO Mesa1 (TK, subcatagory, Mesa, Cantidad, Valor) VALUES ("&TK&", '"&request("subcatagory").item(i)&"', "&Mesa&", "&Cantidad&", "&rs("Valor")&")"
conexion.execute(sql11)

rs.Close

Next

Myakire no tengo palabras para agradecerte en la ayuda que me as dado.
en mensajes privado te he dejado uno espero que lo leas, un millon de gracias eres un genio.(espero que esto no te popularice mucho en el foro, si no te van a volver loco, como yo, jeje. Un abrazo y un saludo muy grande para ti)
  #59 (permalink)  
Antiguo 19/08/2004, 14:37
Avatar de mesiasdiabolico  
Fecha de Ingreso: agosto-2004
Mensajes: 33
Antigüedad: 20 años, 9 meses
Puntos: 0
hay q programarlo de nuevo....

en forma prolija y conceptualmente optima.... sino no sirve....

una sola instruccion SQL, y nada de usar ese vector auxiliar q solo complica la cosa...

es mi opinion
__________________
Como mata el viento norte...
  #60 (permalink)  
Antiguo 20/08/2004, 07:31
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
je, pues si, es tu opinión.
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 01:45.