FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
como obtener un numero entero a raiz de multiplicar dos campo string
hola todos
Estoy realizando un sistema de mediciones energetica. y tengo un problema que debo obtener un valor real a raiz de una operacion que envuelve dos campos string. Tengo tres campos relct varchar(10), que me aceptara 5000/80 ejemplo expresado relpt varchar(10), que me aceptara valores diferentes 1000/50 multiplo money; debo obtener un resultado de esos dos campos multiplo := StrtoInt(relct) * StrtoInt(relpt); pero esto no me resuelve 5000/80 debe darme un entero y 1000/50 otro entero, pero no es así. que alguien me ilumine por favor. |
#2
|
||||
|
||||
Lo que necesitas es un evaluador de expresiones. Me explico: Cuando yo tengo una cadena '2+2', no hay ninguna función como StrToInt en Delphi o cast o convert en un motor de bases de datos que te devuelva el resultado 4. Entonces lo que tienes que utilizar es un evaluador de expresiones. El evaluador de expresiones pueda estar escrito en C, C++, Delphi, PHP, SQL, etc... Todo depende del contexto en donde corra tu aplicación. Entonces en código podría verse así:
Código:
multiplo := EvaluarExpr(relct) * EvaluarExpr(relpt); 1) Escribir una función externa (en el lenguaje que quieras compilada como una DLL), para ser ejecutada desde el propio servidor. 2) Escribir el evaluador como un SP en TRANSACT-SQL, para ser ejecutado desde el propio servidor. 3) Escribir una DLL para ser ejecutada desde Delphi o desde cualquier otra herramienta (C++ Builder, Visual coso, etc.) 4) Escribir el evaluador en tu aplicación cliente. Sugerencia: Escríbete una DLL que permita registrar una función externa para ser ejecutada desde el servidor.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. Última edición por mlara fecha: 26-11-2006 a las 03:27:55. |
#3
|
|||
|
|||
Gracias amigo!
Sirve de mucho la aclaración, escribi, pensando q podía haber algunas de esa funciones echa que me permitiera hacer el trabajo. ya sea en delphi, usando alguna de la que mencionaste, pero no es posibles.
Tengo una q otras opciones. INTENTARE ESCRIBIRME UNA QUE ME AYUDE, TU SUGERENCIA ES MUY BUENA Y VALIDA. CREO Q ME BIENES MEJOR CREARLA EN DELPHI PARA QUE ME HAGA EL TRABAJO EN LA CAPTURA INMEDIATAMENTE. UN SALUDO DESDE SANTO DOMIGO |
#4
|
||||
|
||||
wow, desconocia que sql server pudiera usar funciones embedidas en una dll
me informare al respecto gracias mlara
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás... análisis de información análisis y diseño de sistemas Paoti Rios Reséndiz |
#5
|
||||
|
||||
Creo que te iria mas facil si escribes una funcion utilizando solo T-SQL en el mismo SQL Server. Una funcion que, por ejemplo, tome como entrada un varchar (100/50), localice la posicion en la que se encuentra el operador (/), declare dos variables para el divisor y el dividendo en este caso (100 y 50), los convierta a enteros, ejecute la operacion y retorne el resultado.
No es algo complejo de hacer si tus casos siempre seran asi de simples (una sola operacion con un operador ya conocido/esperado). De hecho, es sumamente simple.
__________________
Héctor Geraldino Software Engineer |
#6
|
||||
|
||||
Eso está bien, pero si se requiere de un sistema que no se quede corto en nada debería soportar la jerarquía de signos y su alteración mediante el uso de paréntesis. Así, el SP o la función externa en SQL Server debería ser capaz de evaluar una expresión como esta:
Esto significa que debería declararse al menos un parámetro de entrada tipo cadena lo suficientemente grande. Podría sugerir 1024 no importa si el código está escrito en lenguaje C o en T-SQL. Para implementar esta función también podría sugerir hacer uso de recursividad. Claro está que para el caso de buzon lo que dice hector es muy cierto.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. Última edición por mlara fecha: 10-12-2006 a las 19:12:45. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
sumar cada digito de un numero entero | emenchi34 | Varios | 9 | 20-09-2006 00:02:35 |
Como obtener el maximo numero generado en campo autonumerico | makinita | C++ Builder | 4 | 11-09-2006 12:14:50 |
Convertir un campo string a entero en consulta | serhasae | SQL | 4 | 24-08-2006 21:00:02 |
conversion de string a entero | click | Varios | 2 | 30-12-2004 11:26:56 |
Obtener el número (posición) de un campo en una tabla | negama | Conexión con bases de datos | 2 | 04-10-2003 01:28:28 |
|