ADO Object.

20/01/2004 - 14:54 por kapsule | Informe spam
Hola a todos.

Tengo un pequeño problemilla, resulta que estoy haciendo
una aplicacion que se conecta a una base de datos SQL
Server. Dentro de esta base de datos tengo un
StoredProcedure, el cual tiene 4 parametros. El problema
se presenta en este punto cunado intento ejecutar el
Stored de esta manera.

void DlgIncidencia::OnBnClickedIncInsert()
{
try
{
_CommandPtr pCommand;
_ParameterPtr
pParam1,pParam2,pParam3,pParam4,
pParam5,pParam6,pParam7;

HRESULT hr = pCommand.CreateInstance
(__uuidof (Command));
if (FAILED (hr)){
AfxMessageBox ("Can't create an
instance of Command");
return;
}

pCommand->ActiveConnection =
m_LinkTempConn;
pCommand->CommandText = "sp_addIncidence";
pCommand->CommandType = adCmdStoredProc;

pParam1 = pCommand->CreateParameter("Id",
adInteger, adParamInput, 4, 1);
pCommand->Parameters->Append(pParam1);
pParam2 = pCommand->CreateParameter
("Id_Incidencia", adInteger, adParamInput, 4, 1);
pCommand->Parameters->Append(pParam2);
pParam3 = pCommand->CreateParameter
("Usuario", adTinyInt, adParamInput, 1, 1);
pCommand->Parameters->Append(pParam3);
pParam4 = pCommand->CreateParameter
("TipoAveria", adTinyInt, adParamInput, 1, 1);
pCommand->Parameters->Append(pParam4);
pParam5 = pCommand->CreateParameter
("Averia", adVarChar, adParamInput, 200, "asdfasdfasd");
pCommand->Parameters->Append(pParam5);
pParam6 = pCommand->CreateParameter
("Solucion", adVarChar, adParamInput, 200, "");
pCommand->Parameters->Append(pParam6);
pParam7 = pCommand->CreateParameter
("Completada", adTinyInt, adParamInput, 1, 0);
pCommand->Parameters->Append(pParam7);

HRESULT hr1 = pCommand->Execute(NULL,
NULL, adCmdStoredProc);
if (FAILED (hr1)){
AfxMessageBox ("Can't create an
instance of Command");
return;
}
}
catch( _com_error &e )
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
}
catch (...)
{
TRACE ( "*** Unhandled Exception ***" );
}

Pero al lanzar este metodo no hace nada, ni muestra
mensaje de error, ni inserta ningun registro. Lo bueno
es que este Stored lo lanzo desde el Analizador de
Consultas y funciona.

Gracias.

Preguntas similare

Leer las respuestas

#1 Rodrigo Corral González
20/01/2004 - 16:48 | Informe spam
Debería funcionar!!!!... Al menos yo no veo nada raro!!!

Un saludo
Rodrigo Corral González

microsoft.public.es.vc FAQ
http://vcfaq.europe.webmatrixhosting.net
Respuesta Responder a este mensaje
#2 Anonimo
21/01/2004 - 17:23 | Informe spam
kapsule:

Capaz viendo el SP se infiera algo más...

Fijate si podés agregarle una variable al primer parámetro
del método Execute de pCommand para devolver los registros
afectados (ojo de no tener el SET NOCOUNT OFF en SQL-
Server).

Salu2!!

Pablo


Hola a todos.

Tengo un pequeño problemilla, resulta que estoy haciendo
una aplicacion que se conecta a una base de datos SQL
Server. Dentro de esta base de datos tengo un
StoredProcedure, el cual tiene 4 parametros. El problema
se presenta en este punto cunado intento ejecutar el
Stored de esta manera.

void DlgIncidencia::OnBnClickedIncInsert()
{
try
{
_CommandPtr pCommand;
_ParameterPtr
pParam1,pParam2,pParam3,pParam4,
pParam5,pParam6,pParam7;

HRESULT hr = pCommand.CreateInstance
(__uuidof (Command));
if (FAILED (hr)){
AfxMessageBox ("Can't create an
instance of Command");
return;
}

pCommand->ActiveConnection =
m_LinkTempConn;
pCommand->CommandText = "sp_addIncidence";
pCommand->CommandType = adCmdStoredProc;

pParam1 = pCommand->CreateParameter("Id",
adInteger, adParamInput, 4, 1);
pCommand->Parameters->Append(pParam1);
pParam2 = pCommand->CreateParameter
("Id_Incidencia", adInteger, adParamInput, 4, 1);
pCommand->Parameters->Append(pParam2);
pParam3 = pCommand->CreateParameter
("Usuario", adTinyInt, adParamInput, 1, 1);
pCommand->Parameters->Append(pParam3);
pParam4 = pCommand->CreateParameter
("TipoAveria", adTinyInt, adParamInput, 1, 1);
pCommand->Parameters->Append(pParam4);
pParam5 = pCommand->CreateParameter
("Averia", adVarChar, adParamInput, 200, "asdfasdfasd");
pCommand->Parameters->Append(pParam5);
pParam6 = pCommand->CreateParameter
("Solucion", adVarChar, adParamInput, 200, "");
pCommand->Parameters->Append(pParam6);
pParam7 = pCommand->CreateParameter
("Completada", adTinyInt, adParamInput, 1, 0);
pCommand->Parameters->Append(pParam7);

HRESULT hr1 = pCommand->Execute(NULL,
NULL, adCmdStoredProc);
if (FAILED (hr1)){
AfxMessageBox ("Can't create an
instance of Command");
return;
}
}
catch( _com_error &e )
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
}
catch (...)
{
TRACE ( "*** Unhandled Exception ***" );
}

Pero al lanzar este metodo no hace nada, ni muestra
mensaje de error, ni inserta ningun registro. Lo bueno
es que este Stored lo lanzo desde el Analizador de
Consultas y funciona.

Gracias.
.

Respuesta Responder a este mensaje
#3 kapsule
21/01/2004 - 20:50 | Informe spam

kapsule:

Capaz viendo el SP se infiera algo más...

Fijate si podés agregarle una variable al primer


parámetro
del método Execute de pCommand para devolver los


registros
afectados (ojo de no tener el SET NOCOUNT OFF en SQL-
Server).

Salu2!!

Pablo


Hola a todos.

Tengo un pequeño problemilla, resulta que estoy




haciendo
una aplicacion que se conecta a una base de datos SQL
Server. Dentro de esta base de datos tengo un
StoredProcedure, el cual tiene 4 parametros. El




problema
se presenta en este punto cunado intento ejecutar el
Stored de esta manera.

void DlgIncidencia::OnBnClickedIncInsert()
{
try
{
_CommandPtr pCommand;
_ParameterPtr
pParam1,pParam2,pParam3,pParam4,
pParam5,pParam6,pParam7;

HRESULT hr = pCommand.CreateInstance
(__uuidof (Command));
if (FAILED (hr)){
AfxMessageBox ("Can't create an
instance of Command");
return;
}

pCommand->ActiveConnection =
m_LinkTempConn;
pCommand->CommandText = "sp_addIncidence";
pCommand->CommandType = adCmdStoredProc;

pParam1 = pCommand->CreateParameter("Id",
adInteger, adParamInput, 4, 1);
pCommand->Parameters->Append(pParam1);
pParam2 = pCommand->CreateParameter
("Id_Incidencia", adInteger, adParamInput, 4, 1);
pCommand->Parameters->Append(pParam2);
pParam3 = pCommand->CreateParameter
("Usuario", adTinyInt, adParamInput, 1, 1);
pCommand->Parameters->Append(pParam3);
pParam4 = pCommand->CreateParameter
("TipoAveria", adTinyInt, adParamInput, 1, 1);
pCommand->Parameters->Append(pParam4);
pParam5 = pCommand->CreateParameter
("Averia", adVarChar, adParamInput, 200, "asdfasdfasd");
pCommand->Parameters->Append(pParam5);
pParam6 = pCommand->CreateParameter
("Solucion", adVarChar, adParamInput, 200, "");
pCommand->Parameters->Append(pParam6);
pParam7 = pCommand->CreateParameter
("Completada", adTinyInt, adParamInput, 1, 0);

pCommand->Parameters->Append(pParam7);

HRESULT hr1 = pCommand->Execute(NULL,
NULL, adCmdStoredProc);
if (FAILED (hr1)){
AfxMessageBox ("Can't create an
instance of Command");
return;
}
}
catch( _com_error &e )
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
}
catch (...)
{
TRACE ( "*** Unhandled Exception ***" );
}

Pero al lanzar este metodo no hace nada, ni muestra
mensaje de error, ni inserta ningun registro. Lo bueno
es que este Stored lo lanzo desde el Analizador de
Consultas y funciona.

Gracias.
.



.



//////////////////////////////////////////////////////////
Hola a todos gracias por vuestra ayuda, os adjunto el
stored que estoy utilizando, haber si podeis ver algo
raro, un saludo.

Y Muchas Gracias.

/*Procedure version v1.0*/

CREATE PROCEDURE dbo.sp_addIncidence
@Id_ int,
@Id_Incidencia int,
@Usuario tinyint,
@TipoAveria tinyint,
@Averia char(200),
@Solucion char(200),
@Completada tinyint
AS
declare @Max_Incidencia int
declare @dt_Fin datetime
declare @dt_OldDate datetime

set nocount on

/* Comprueba si la incidencia esta iniciada*/
if(@Id_Incidencia is NULL or @Id_Incidencia ='')
begin
set @Max_Incidencia = (select count(*) from
dbo.st_incidencias)
set @Id_Incidencia = @Max_Incidencia + 1
end

/* Comprueba si existe la incidencia*/
/* Si no existe insertamos*/
/* Si existe actualizamos*/
if( exists (select * from dbo.st_incidencias where
IdIncidencia = @Id_Incidencia))
begin
set @dt_OldDate = (select Fin from dbo.st_incidencias
where IdIncidencia = @Id_Incidencia)

if(@dt_OldDate = '01/01/1999')
begin
begin transaction
update dbo.st_incidencias set Fin=getdate() where
IdIncidencia=@Id_Incidencia
commit
end
end
else
begin
set @dt_Fin = cast('01/01/99 00:00:00' as datetime)

begin transaction
insert into st_incidencias(Id_obj, IdIncidencia,
Usuario, TpAveria, Inicio, Fin, Averia, Solucion,
Completada) values
(@Id_,@Id_Incidencia,@Usuario,@TipoAveria,getdate
(),@dt_Fin,@Averia,
@Solucion,@Completada)
commit
end

/* Gestion de errores no controlados*/
if(@@error =0 or @@error =-1) return 1
GO
Respuesta Responder a este mensaje
#4 Crosio, Pablo
22/01/2004 - 04:11 | Informe spam
kapsule:

Por lo visto el sp debería funcionar ok, al igual que la aplicación...
Puede ser problema de conexión o de ADO en general...
Lo que ví es que estás capturando las excepciones com pero no las mostrás...
Intentá agregar esto:

AfxMessageBox(bstrSource + " - " + bstrDescription);

luego de estas 2 líneas:

_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());

con eso vas a ver el error si se produce alguno..

espero te sirva

salu2!!

pablo

"kapsule" wrote in message
news:17e601c3e057$c7e38860$


kapsule:

Capaz viendo el SP se infiera algo más...

Fijate si podés agregarle una variable al primer


parámetro
del método Execute de pCommand para devolver los


registros
afectados (ojo de no tener el SET NOCOUNT OFF en SQL-
Server).

Salu2!!

Pablo


Hola a todos.

Tengo un pequeño problemilla, resulta que estoy




haciendo
una aplicacion que se conecta a una base de datos SQL
Server. Dentro de esta base de datos tengo un
StoredProcedure, el cual tiene 4 parametros. El




problema
se presenta en este punto cunado intento ejecutar el
Stored de esta manera.

void DlgIncidencia::OnBnClickedIncInsert()
{
try
{
_CommandPtr pCommand;
_ParameterPtr
pParam1,pParam2,pParam3,pParam4,
pParam5,pParam6,pParam7;

HRESULT hr = pCommand.CreateInstance
(__uuidof (Command));
if (FAILED (hr)){
AfxMessageBox ("Can't create an
instance of Command");
return;
}

pCommand->ActiveConnection >>m_LinkTempConn;
pCommand->CommandText = "sp_addIncidence";
pCommand->CommandType = adCmdStoredProc;

pParam1 = pCommand->CreateParameter("Id",
adInteger, adParamInput, 4, 1);
pCommand->Parameters->Append(pParam1);
pParam2 = pCommand->CreateParameter
("Id_Incidencia", adInteger, adParamInput, 4, 1);
pCommand->Parameters->Append(pParam2);
pParam3 = pCommand->CreateParameter
("Usuario", adTinyInt, adParamInput, 1, 1);
pCommand->Parameters->Append(pParam3);
pParam4 = pCommand->CreateParameter
("TipoAveria", adTinyInt, adParamInput, 1, 1);
pCommand->Parameters->Append(pParam4);
pParam5 = pCommand->CreateParameter
("Averia", adVarChar, adParamInput, 200, "asdfasdfasd");
pCommand->Parameters->Append(pParam5);
pParam6 = pCommand->CreateParameter
("Solucion", adVarChar, adParamInput, 200, "");
pCommand->Parameters->Append(pParam6);
pParam7 = pCommand->CreateParameter
("Completada", adTinyInt, adParamInput, 1, 0);

pCommand->Parameters->Append(pParam7);

HRESULT hr1 = pCommand->Execute(NULL,
NULL, adCmdStoredProc);
if (FAILED (hr1)){
AfxMessageBox ("Can't create an
instance of Command");
return;
}
}
catch( _com_error &e )
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
}
catch (...)
{
TRACE ( "*** Unhandled Exception ***" );
}

Pero al lanzar este metodo no hace nada, ni muestra
mensaje de error, ni inserta ningun registro. Lo bueno
es que este Stored lo lanzo desde el Analizador de
Consultas y funciona.

Gracias.
.



.



//////////////////////////////////////////////////////////
Hola a todos gracias por vuestra ayuda, os adjunto el
stored que estoy utilizando, haber si podeis ver algo
raro, un saludo.

Y Muchas Gracias.

/*Procedure version v1.0*/

CREATE PROCEDURE dbo.sp_addIncidence
@Id_ int,
@Id_Incidencia int,
@Usuario tinyint,
@TipoAveria tinyint,
@Averia char(200),
@Solucion char(200),
@Completada tinyint
AS
declare @Max_Incidencia int
declare @dt_Fin datetime
declare @dt_OldDate datetime

set nocount on

/* Comprueba si la incidencia esta iniciada*/
if(@Id_Incidencia is NULL or @Id_Incidencia ='')
begin
set @Max_Incidencia = (select count(*) from
dbo.st_incidencias)
set @Id_Incidencia = @Max_Incidencia + 1
end

/* Comprueba si existe la incidencia*/
/* Si no existe insertamos*/
/* Si existe actualizamos*/
if( exists (select * from dbo.st_incidencias where
IdIncidencia = @Id_Incidencia))
begin
set @dt_OldDate = (select Fin from dbo.st_incidencias
where IdIncidencia = @Id_Incidencia)

if(@dt_OldDate = '01/01/1999')
begin
begin transaction
update dbo.st_incidencias set Fin=getdate() where
IdIncidencia=@Id_Incidencia
commit
end
end
else
begin
set @dt_Fin = cast('01/01/99 00:00:00' as datetime)

begin transaction
insert into st_incidencias(Id_obj, IdIncidencia,
Usuario, TpAveria, Inicio, Fin, Averia, Solucion,
Completada) values
(@Id_,@Id_Incidencia,@Usuario,@TipoAveria,getdate
(),@dt_Fin,@Averia,
@Solucion,@Completada)
commit
end

/* Gestion de errores no controlados*/
if(@@error =0 or @@error =-1) return 1
GO
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida