Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-06-2004
LucianoRey LucianoRey is offline
Miembro
 
Registrado: feb 2004
Posts: 73
Poder: 21
LucianoRey Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 15-06-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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).
Responder Con Cita
  #3  
Antiguo 15-06-2004
LucianoRey LucianoRey is offline
Miembro
 
Registrado: feb 2004
Posts: 73
Poder: 21
LucianoRey Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 15-06-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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).
Responder Con Cita
  #5  
Antiguo 15-06-2004
LucianoRey LucianoRey is offline
Miembro
 
Registrado: feb 2004
Posts: 73
Poder: 21
LucianoRey Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 15-06-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

¿ Este es tu procedimiento almacenado ?

Código SQL [-]
CREATE PROCEDURE [Borra] (@MiBase varchar, @Qcampo varchar) AS
delete from MiBase where clave = Qcampo

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).
Responder Con Cita
  #7  
Antiguo 06-07-2004
lgarcia lgarcia is offline
Miembro
 
Registrado: jul 2004
Posts: 479
Poder: 20
lgarcia Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:42:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi