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: 23
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: 23
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: 23
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 15-06-2004
LucianoRey LucianoRey is offline
Miembro
 
Registrado: feb 2004
Posts: 73
Poder: 21
LucianoRey Va por buen camino
Procedimiento almacenado y Ado

Ok, gracias lo pongo en practica y vuelvo, otra vez gracias
Responder Con Cita
  #8  
Antiguo 19-06-2004
Carlomagno1011 Carlomagno1011 is offline
Registrado
 
Registrado: jun 2004
Posts: 3
Poder: 0
Carlomagno1011 Va por buen camino
Cool Sql 7 y delphi

Bueno, Hola a todos, estoy probando tanto delphi como Power Builder, en lo que respecta a manejo de procedimientos almacenados (no soy un experto sino un "probador" ,yo tengo un problemilla con los procemientos almacenados, he hecho uno en SQL server, es uno que simplemente le ingreso un parametro y me devuelve un conjunto de registros. para ello utilizo el comando LIKE.
SIn embargo cuando intento ver los resultados en el DBgrid de delphi, no me sale ninguno. He probado incluso un procedimiento almacenado en Interbase, y nada, he ejecutado los procedimientos en SQL e interbase respectivamente y me arrojan resultados. pero cuando ya estoy en el formulario en tiempo de diseño, no me arroja nada en el grid.
He tenido que suplir el procedimiento almacenado por un Query simple y eso me responde a la perfeccion.., sin embargo no es lo que queria pues quiero aprovechar el procedimiento almacenado creado. que puedo hacer???
Agradezco de antemano sus respuestas.
Responder Con Cita
  #9  
Antiguo 19-06-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
¿ Qe componentes y versión de Delphi utiilzas ? Con componentes ADO no deberias tener este problema.

En cualquier caso, siempre puedes ejecutar el procedimiento desde un Query.

Ejplo: EXEC NombreProcedimiento(:Param1, :Param2)

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #10  
Antiguo 19-06-2004
Carlomagno1011 Carlomagno1011 is offline
Registrado
 
Registrado: jun 2004
Posts: 3
Poder: 0
Carlomagno1011 Va por buen camino
Aun con el "Problemilla"

Disculpenme si me olvide de poner las versiones, tengo la version SQL SERVER 7 y el delphi 5.0, como he diho anteriormente he probado los procedimientos almacenados con los analizadores de consultas del SQL SERVER y en el SQL Explorer, en ambas herramientas los procedimientos almacenados funcionan correctamente, he hecho el enlace con los ADO y con los controles IBX, es mas ejecuto el programa y coloco una linea como la sgte:
Edit2.text:=ADOStoredProc.............
Edit2.text=IBStore..................
para que me muestre algun resultado y efectivamente lo hace.
mi problema radica en que esos resultados no los puedo mostrar en el DBGRID. como se hacen con un simple Query-->datasource---->DBgrid;
Repito nuevamente, que es solo para mostrar, los resultados ya que quiero aprovechar el PRocedimiento almacenado

Saludos y gracias por la respuesta
amigos del club delphi
Responder Con Cita
  #11  
Antiguo 21-06-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Cita:
Empezado por Carlomagno1011
Edit2.text:=ADOStoredProc.............
Edit2.text=IBStore..................
Esto no ayuda mucho que digamos, no has puesto como accedes al resultado (como campos, parámetros, ....).

En todo caso, probablemente tu problema para ver el resultado en un DbGrid es que no debes abrir el procedimiento como un Dataset.

Cuando quieres obtener un Dataset (conjunto de registros), tienes que abrir el procedimiento con un Open, y no ejecutarlo con un Execute.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #12  
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 15:25:27.


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