
| |||
jejejje, seguro que se exactamente por qu equieres quitar ese " OR ".....los programadores estamos hechos por el mismo molde ![]() cadena = Left(cadena,Len(cadena)-4) ToKaTa.
__________________ "Si pudieras volver.....¿.lo harias?" |
| ||||
Jejeje, a ver si es lo q tu pensabas. Me pasan varios parametros desde un form q tiene una lista en la q se pueden elegir varias opciones, y para hacer la busqueda voy haciendo la select en un bucle, pero lo ponga como lo ponga, al final siempre sobra algo en algun sitio, jejej: Código PHP: ![]() Hay alguna forma de hacer lo que quiero???
__________________ Vayamos por Partes :: Jack el Destripador |
| |||
fuahhh...pues lo veo realmente jodido.....solo se me ocurren chapuzas en plan duplicar la coumna y ponerla como texto......pero vamos.......no se me ocurre nada de nada.......por que como encima no se pueden aplicar operacion sobre el campo en la parte del where...... ![]() sigo pensando...pero por ahora.....mu mal... ![]() ToKaTa.
__________________ "Si pudieras volver.....¿.lo harias?" |
| ||||
Lo de duplicar la columna y ponerla como texto tampoco lo puedo hacer por que es una tabla vinculada que viene de la base de datos de empresas que tenemos, y esa es intocable. Si tocase algo ahi, los programas de gestion podrian trastocarse ![]() ![]() ![]()
__________________ Vayamos por Partes :: Jack el Destripador |
| |||
![]() ![]() pues no se, haz un select de todos los codigos (supniendo que no te vaya a devolver 1500000 registros) y luegos los tratas en tu script como cadena y tomando o quitando los que te hagan falta Esta es una solucion relativamente buena si el query no te va a devolver demasiados registros....aquneu bueno...si lo unico que vas a sacar son los codigos...tampoco creo que sea tanta carga para el gestor de bd... ToKaTa.
__________________ "Si pudieras volver.....¿.lo harias?" |
| ||||
increíble colegas! he entrado a Foros del web para poner exactamente la misma consulta que el amigo angel_dope , y este post era el último que se había enviado. Yo necesitaba eliminar los dos últimos caracteres de una cadena con el fin de eliminar los decimales de una cifra después de multiplicarla por 100. Para ello, me ha valido la solución de ToKaTa. Gracias, y ¡larga vida a los Foros del Web! |
| ||||
La tabla tiene 101 registros nada más, asi que por lo d la carga no pasaria nada, pero como lo haria??? Tengo que hacer lo siguiente: sacar de la tabla ActGenEmpresas, aquellas actividades que tengan el mismo codigo, o subcodigo (los q empiezan = q el anterior), que coincidan con las actividades que hayan elegido en la pagina anterior, pillando su código, y el codigoempresa. Despues de eso tengo que escribir todo el recordset en otra tabla temporal ya creada. Lo de escribir en la temporal está claro, pero no se como hacer lo que tu dices, recorrer toda la tabla, pillar los código, pasarlos a texto y despues volver a buscar los que me interesan, alguna ayudita??? Por cierto, habias acertado con la razon por la que queria quitar los ultimos caracteres??? ![]()
__________________ Vayamos por Partes :: Jack el Destripador |
| ||||
X cierto, macabo de dar cuenta de que no son 101 registros, esa es la tabla desde la cual lleno la lista en la página previa, sobre la que tengo buscar despues tiene 16.600 registros ![]() ![]()
__________________ Vayamos por Partes :: Jack el Destripador |
| |||
No tengo muy claro si entendi, asi que te explico lo que hace este codigo que te paso y ya ves si te srive o hay que modificarlo. -Llegan una serie de valores que metemos en un vector (vectorActividad) -Hacemos un select de la tabla ActGenEmpresas sin poner condiciones. De este select sacamos solo el campo codigo de TODOS los registros -Luego, para cada codigo obtenido del codigo, lo convertimos en cadena y vemos cual es el primer caracter de esa cadena (primeraLetraCodigo) -hacemos un bucle para ver si esa letra primera del codigo esta entre las que se supone que debemos listar (o sea, las codigos de actividad que tenemos guardados en el vector) -Si no lo es el bucle coge el siguiente codigo y hace lo mismo -Si es un codigo de los que buscamos, pues llamamos a una funcion que utilizad el codigo de ese registro (se lo pasamos como parametro) para copiar el resgistro en la tabla temporal que mencionas
Código:
Con 100 registros no hay problema.........pero bueno, con 16000 no lo se, es cuestion de probar pa ver si va lento....no te lo puedo decir por que no suelo trabajar con tablas "tan grandes"......si otro forero a trabajado a este nivel quizas te pueda orientar en la velocidad de ejecucion....<% vectorActividad = split("3,12,16,1",",") Set rs_actividad=createobject("ADODB.Recordset") rs_actividad.cursortype = 3 rs_actividad.LockType = 2 sql_actividad = "Select codigo From ActGenEmpresas" rs_actividad.open sql_actividad,"DSN=prueba" do while (not rs_actividad.eof) primeraLetraCodigo = Left(CStr(rs_actividad.fields("codigo")),1) encontrado = 0 i = 0 'utilizo un while en vez de un for por que el for me obliga a recorrer todo el 'vector, mientras que con el while optimizamos velocidad saliendo del bucle 'cuando la la condicion de encontrado=1 do while (CInt(i) <= CInt(Ubound(vectorActividad))) if (CSTr(primeraLetraCodigo) = CSTr(vectorActividad(i))) then encontrado = 1 end if i = i + 1 loop if (CInt(encontrado) = 1) then 'Aqui llama a una funcion que tendras hecha que lo que hace es copiar 'el registro, cuyo codigo es el que le pasas, en la tabla temporal esa que 'mencionas 'copiaRegistroATablaTemp(rs_actividad.fields("codigo")) response.write "<br>Este si vale"&rs_actividad.fields("codigo") end if rs_actividad.moveNext loop %> ToKaTa. P.D.: sip, basicamente si acerte con lo de los caracteres ![]() ![]()
__________________ "Si pudieras volver.....¿.lo harias?" |
| ||||
me parece que la solución es mucho más simple. Si te pasan un 3 y querés que devuelva los enteros y los que tienen decimales, entonces estás haciendo una consulta por los ">= 3 AND < 4" O sea que debería quedar más o menos así (cuidado que no estoy verificando que sea correcto): sql_actividad = "Select * From ActividadGeneral Where " For i=0 to ubound(actividad) sql_actividad = sql_actividad & "codigo >= " & actividad(i) & " AND codigo < " & actividad(i) - 1 & " OR " next |
| |||
![]() no entendi. Si por ejemplo un codigo de actividad pasada es el 3, no entiendo como ese query va a devolver como validos valores como: 3 39 3476 398736 ![]() ToKaTa.
__________________ "Si pudieras volver.....¿.lo harias?" |
| ||||
Cita: quiero todos los que empiezen por 3 (3, 31,32,325,366,3121..) Leí mal esa parte ![]() Olvidalo. En realidad interpreté que querías por ejemplo los números: 3 3,1 3,5 3,69 3,9999 la gripe me tiene más o menos así: ![]() |
| ||||
Cita: Perfecto, con esto funciona, pero por que hay que ponerle el Ltrim??? Eso es para quitar espacios a la izquierda si no recuerdo mal, no??? He probado y si le quito eso no saca nada, asi q supongo que de algun sitio se sacar los blancos SELECT STR(codigo) FROM ACTIVIDADES WHERE LTRIM(STR(codigo)) LIKE '3%' ![]() ![]() ![]() Gracias a todos de nuevo ![]()
__________________ Vayamos por Partes :: Jack el Destripador |
| ||||
Pues no tiene mucho sentido, pero le mete espacios por la izquierda, por eso se usa el LTRIM, porque le quita esos espacios. De todas formas, cuando no sepas que te está devolviendo le puedes hacer un SELECT '|' + STR(CODIGO) + '|' FROM TABLA y así ves si te ha metido espacios por la izda, dcha, o donde sea. No sé por qué, pero hay funciones agregadas que a veces son impredecibles. Me alegro de que te funcione. |