FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Procedimiento almacenado y Ado
Hola a todos, pues aqui con mi tercera pregunta, y esta vez tiene que ver con Ado y los store procedure, espero que mi pregunta este bien aqui, sino mil disculpas, el asunto es que tengo un procedimiento almacenado en Sql Sqerver de la siguiente manera:
CREATE PROCEDURE [Borra] (@MiBase varchar, @Qcampo varchar) AS delete from MiBase where clave = Qcampo GO , y en mi aplicación tengo un AdoStoreProcedure, con la propiedad ProcedureName = 'Borra;1', y la propiedad Parameters me aparecen tres Parametros no dos como estan en el sp, bueno el problema que tengo es que cuando ejecuto ma manda un error que dice : -El procedimiento 'Borra' precisa el parámetro '@MiBase', que no se ha especificado-, como se ve es mi primer parametro, ya probe asignando en tiempo de ejecución a mis parametros con ParamByName e Items, pero el problema parece ser en el servidor, alguien me puede ayudar con esto, de antemano muchas gracias. |
#2
|
||||
|
||||
Hola.
El tercer parámetro probablemente es el parámetro del valor devuelto por el procedimiento (Todo procedimiento almacenado SQL Server devuelve un entero). Respecto a que no encuentra los parámetros al ejecutarlo, esto es debido a que hay que fijarlos como persistentes. Para ello, en tiempo de diseño entra en la lista de parámetros del ADOStoredProc, y cambia cualquier propiedad (por ejemplo pón un valor por defecto en el Values de uno de los parámetros). Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#3
|
|||
|
|||
Sql Server y Ado
Bueno aqui de nuevo, guillotmarc hice lo que me dijiste y ya no me marca ese error, ahora me da uno que dice: -El nombre de objeto Mibase no es valido-, le cambie el nombre pensando que fuera una palabra reservada pero no es así, sabes algo al respecto, mi codigo en Delphi es el siguiente:
if MessageDlg('¿Desea eliminar el registro?',mtConfirmation,[mbYes,mbNo],0)=mrYes then DataModule1.ADOStoredProc2.Close; DataModule1.ADOStoredProc2.Active:=(0=0); // DataModule1.ADOStoredProc2.Parameters.Clear; // DataModule1.ADOStoredProc2.Parameters.ParamByName('@MiBase').Value := Quetabla; // DataModule1.ADOStoredProc2.Parameters.ParamByName('@Qcampo').Value := DBGrid1.Fields[0].AsString; DataModule1.ADOStoredProc2.Parameters.Items[1].Value := Quetabla; DataModule1.ADOStoredProc2.Parameters.Items[2].Value := DBGrid1.Fields[0].AsString; DataModule1.ADOStoredProc2.ExecProc; DataModule1.ADOStoredProc2.Open; DataModule1.ADOStoredProc2.Active:=(0=0); // DataModule1.SQLQuery1.Close; // DataModule1.SQLQuery1.Active:=(0=1); // DataModule1.SQLQuery1.ParamByName('scla').AsString:=DBGrid1.Fields[0].AsString; // DataModule1.SQLQuery1.SQL.Text:='delete from '+Quetabla+' where clave=:scla'; // DataModule1.SQLQuery1.Open; // DataModule1.SQLQuery1.Active:=true; , perdón por los comentarios es para que vean los cambios que he hecho, gracias otra vez. |
#4
|
||||
|
||||
Hola.
Con el ExecProc tienes bastante, te sobran las lineas con el Open y el Active, además van a dar error (solo se utilizaria el Open si el procedimiento almacenado va a devolver registros como una consulta, pero no es el caso). Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#5
|
|||
|
|||
Procedimiento almacenado y Ado
Sigo igual, sera alguna propiedad de mi AdoStoreProc ó algo que me falte en el servidor?, ya vi algunos ejemplos del foro pero nada parecido, sigo investigando, el error es el mismo:
-El nombre de objeto Mibase no es valido-, gracias. |
#6
|
||||
|
||||
Hola.
¿ Este es tu procedimiento almacenado ?
No entiendo como SQL Server te ha dejado compilar esto. No puedes especificar una tabla mediante un parámetro. La única forma de hacer algo así es construirte una sentencia SQL en una variable de cadena dentro del procedimiento, y ejecutar esa sentencia con la instrucción EXECUTE. En la documentación encontrarás más información de la instrucción EXECUTE. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#7
|
|||
|
|||
Sql y Ado
El primer parametro que sale no tiene importancia y seguro que es @return_ value. Te recomiendo que pruebes el procedimiento almacenado en el Query Analizer del SQL y veas si te devuelve lo que necesitas.
Saludos lgarcia |
|
|
|