FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Delphi y los procedimientos almacenados
Hola a todos, muchos saludos. Trabajo con delphi 7 y Microsoft Sql Server 2000. Tengo el siguiente procedimiento almacenado:
Que me devuelve un conjunto de registros que cumplen con la condición que lleva implicita el procedimiento. Y tengo otro procedimeinto almacenado construído de la sgte forma: El primer procedimiento me devuelve el conjunto de facturas que están sin pagar dentro del rango de días que se le específique, que puede ser 0-30,30-60,60-90 y mas de 90 días. Y el segundo lo cnstruí con la finalidad de que me devoviera el importe total de las facturas sin pagar. Esto funciona bien en sql server 2000, es decir cada procedimiento por separado lo ejecuto pasandóle los parámetros correspondientes y me dan los resultados deseados. Ahora en delphi tengo un formulario con un ado connection, un ado stored procedure, un dbgrid, tres edit y un botón de comando y por supuesto un data source, a través del siguiento código logro que el dbgrid se me llene con los datos que me devuelve el primer procedimiento almecenado: El segundo procedimiento almacenado lo tengo nada más para que me devuelva el total de las facturas sin pagar, y pienso asignarle el valor de este parámetro a un edit, ahora mi duda es la siguiente puedo manipular ambos procedimientos dentro de las mismas líneas de códigos anteriores?. Puesto como pueden pareciar este segundo procedimiento almacenado tiene un parámetro de salida y para hecerlo tendría que ejecutar el método execpro para que funcione, al menos eso es lo que tengo entendido, el hecho es que se me complica un tanto esto y aveces cuando trato de hacerlo me genera varios errorres. Ojala me hayan enetendido y puedan ayudarme a encontrar una solución. A lo mejor en vez de dos con un solo procedmiento almecenado yo podría resolver esto. Pero hasta el momento no se como hacerlo. Muchas gracias y disculpen mi desconocimiento. |
#2
|
||||
|
||||
No estoy ducho en sqlServer, pero si un procedimiento te devuelve datos (para mostrar en un Grid, por ejemplo, si deseas usar ese mismo componente para llamar al segundo SP tendrás que cerrarlo, configurarlo y abrirlo de nuevo, por tanto pierdes el resultado del grid.
Lo que quiero decir es que debes usar: - O bien 2 AdoSP. - O bien abrir primero el que da los totales, guardas el resultado en un Edit (u otro control que no sea de Acceso a datos dbaware), por último lo cierras, modificas las propiedades del AdoSP para llamar al primer SP y dejas abierto dicho SP. Como verás el segundo método es bastante lioso, y si necesitas solicitar de nuevo los totales, implica doble trabajo, quizás sea más cómodo usar 2 AdoSP. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#3
|
|||
|
|||
Lepe te doy las gracias nuevamente por tus rápidas respuesta, seguí tu consejo y agregué al formulario un nuevo ado stored procedure, modifiqué el segundo procedimiento almacenado de la siguiente forma:
y en código del evento click del botón de comando pusé lo siguiente: Cuando lo ejecuto, es decir cuando click en el botón de coamando me duveuelve el siguiente mensaje de error, se levanta una excepción en la clase EConvertError with the message is not a valid integer value. He mirado, pero estoy como el pescado en nevera, no encuentro donde está el error. Gracias amigo y disculpa tanta molestia. |
#4
|
|||
|
|||
Te propongo lo siguiente:
El código del segundo lo añades al primero y lo calculas al principio guardando el valor en @Importe. Esta variable la añades como una columna añadida más en tus queries siguientes o bien lo pones como parámetro de salida. Suerte!!!
__________________
Grandes frases de nuestro tiempo: "La pasta no és para tirarla, es para el Tunning" "TodoOK=False...." Enjoy it!!! |
#5
|
|||
|
|||
Hola, gracias por tu sugerencia, pero no entiendo lo que me dijiste, me gustaría si pudieras fueses un poco mas explicito. Pues todavía tengo lagunas en el trabajo con los procedimientos alamacenados.
|
#6
|
|||
|
|||
Por lo que me comentas creo que solo puede ser problema de la linia
Mira de hacer la conversión a mano junto con un try except... Saludos
__________________
Grandes frases de nuestro tiempo: "La pasta no és para tirarla, es para el Tunning" "TodoOK=False...." Enjoy it!!! |
#7
|
||||
|
||||
Yo de refilón he visto otro detalle:
Aunque el código original está bien identado, falta el begin .. end del else, espero que sea error de copiar y pegar. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#8
|
|||
|
|||
OJO con el strtoint
Hola, a vista de pájaro vi tu sp, muy bueno. hace poco hice uno parecido utilizando un editmask, pero tuve que anteponer un trim para evitar que me diera problemas con un digitador malicioso. posiblemente no sea tu caso pero OJO con eso. (StrToInt(Trim(EditMask1.text)))
ok. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Procedimientos almacenados AS/400 | Carlos A Ortega | DB2 | 1 | 12-12-2006 00:32:39 |
procedimientos almacenados | datorar | Conexión con bases de datos | 8 | 03-01-2006 17:05:43 |
Procedimientos almacenados en delphi con storeprocedure | pgl | Firebird e Interbase | 7 | 05-11-2005 00:58:53 |
procedimientos almacenados | Gabriel2 | SQL | 1 | 13-01-2005 14:50:09 |
Procedimientos Almacenados | Gabriel A Reyes | MS SQL Server | 5 | 07-07-2003 14:08:46 |
|