Consultas en el Sql Server

15/08/2003 - 22:00 por Jorge A S | Informe spam
Buenas a todos, les comento que estoy haciendo consultas
a una base en SQL Server y me encuentro con los siguientes
inconvenientes:

1) Usando la clase CRecordset no encuentro la forma de
levantar Stored Procedures, conocen alguna forma de
hacerlo ?

2) Usando las fuentes de datos ADO: Connection y toda su
familia pude acceder y recuperar registros de un Stored
Procedure el problema que encuentro es que no me da el
total de registros que trae el recordset, saben de alguna
de forma de obtener este dato ?
Desde ya les agradezco.

Preguntas similare

Leer las respuestas

#1 Jorge Eastman
17/08/2003 - 08:32 | Informe spam
Hola tocayo...


La verdad que no se nada de VC, pero en otros entornos de desarrollo, por lo
general no conoces el número de registros hasta que no llegas al último,
para ello se hace un ciclo que recorra el recordSet hasta que sea EOF, los
recordSet tienen esa propiedad.

Ahora, si por alguna circunstancia particular necesitas conocer el número de
registros antes de comenzar a procesarlos localmente, yo lo que hago es:

creo un SP con dos consultas, la primera con la misma condicion, tablas y
demas como la que se traera los datos, pero solo con um campo de la forma
siguiente

select count(*) as cantidad
from tabla
where condicion

luego la consulta que me retorna los datos

select *
from tabla
where condicion

del lado del cliente esto se recibe como un conjunto de resultado, en RDO
con VB al consultar el recorset tenermos los resultados de la primera
consulta, para poder ver los resultados de la segunda algo algo como esto

if not rs.MoreResults then
.
endif

con esto le indico a RDO que mi conjunto de registros actuales serán los del
segundo conjunto

se que en ADO existe algo similar, pero no se como se llama, estoy es para
darte una pista que espero que te sea de utilidad

Un saludo


"Jorge A S" escribió en el mensaje
news:01e901c36367$edc444b0$
Buenas a todos, les comento que estoy haciendo consultas
a una base en SQL Server y me encuentro con los siguientes
inconvenientes:

1) Usando la clase CRecordset no encuentro la forma de
levantar Stored Procedures, conocen alguna forma de
hacerlo ?

2) Usando las fuentes de datos ADO: Connection y toda su
familia pude acceder y recuperar registros de un Stored
Procedure el problema que encuentro es que no me da el
total de registros que trae el recordset, saben de alguna
de forma de obtener este dato ?
Desde ya les agradezco.

Respuesta Responder a este mensaje
#2 Jorge Eastman
17/08/2003 - 08:39 | Informe spam
Estuve buscando algo de informacion en la ayuda MSND, claro, desde VB que es
lo que mas entiendo y vi lo siguiente:


Dim rs As New ADODB.Recordset
sql = "Select * from authors Where year_born is not null; " _
& "Select * From authors Where year_born is null"
rs.Open sql, cn
Do
i = MsgBox("¿Mostrar los resultados?", vbYesNoCancel)
If i = vbYes Then
ADOGrid1.ShowData rs
Set rs = rs.NextRecordset
End If
Loop Until rs.State = adStateClosed


buscando ayuda de ADO para VC encontre lo siguiente:

SELECT LastName, FirstName FROM Authors
WHERE LastName = 'Smith';

SELECT Title, ISBN FROM Titles
WHERE Pub_ID = 9999

#include <afxole.h>
#include <dbdao.h>

CdbDBEngine dben;
CdbWorkspace ws;
CdbDatabase dbs;
CdbRecordset rst;
LPTSTR szSelect = // Two queries...
"SELECT LastName, FirstName "
"FROM Authors WHERE LastName = 'Smith';"
"SELECT Title, ISBN FROM Titles WHERE "
"Pub_ID = 9999";
...
ws = dben.CreateWorkspace(...,dbUseODBC);
dbs = ws.OpenDatabase(...);
rst = dbs.OpenRecordset(szSelect);
while( rst.NextRecordset())
{ ... // Process each query...
if (Error)
rst.Cancel();
else
rst.Update();
...
}
rst.Close();
espero que te sea de utilidadsaludos





"Jorge Eastman" escribió en el mensaje
news:
Hola tocayo...


La verdad que no se nada de VC, pero en otros entornos de desarrollo, por


lo
general no conoces el número de registros hasta que no llegas al último,
para ello se hace un ciclo que recorra el recordSet hasta que sea EOF, los
recordSet tienen esa propiedad.

Ahora, si por alguna circunstancia particular necesitas conocer el número


de
registros antes de comenzar a procesarlos localmente, yo lo que hago es:

creo un SP con dos consultas, la primera con la misma condicion, tablas y
demas como la que se traera los datos, pero solo con um campo de la forma
siguiente

select count(*) as cantidad
from tabla
where condicion

luego la consulta que me retorna los datos

select *
from tabla
where condicion

del lado del cliente esto se recibe como un conjunto de resultado, en RDO
con VB al consultar el recorset tenermos los resultados de la primera
consulta, para poder ver los resultados de la segunda algo algo como esto

if not rs.MoreResults then
.
endif

con esto le indico a RDO que mi conjunto de registros actuales serán los


del
segundo conjunto

se que en ADO existe algo similar, pero no se como se llama, estoy es para
darte una pista que espero que te sea de utilidad

Un saludo


"Jorge A S" escribió en el mensaje
news:01e901c36367$edc444b0$
> Buenas a todos, les comento que estoy haciendo consultas
> a una base en SQL Server y me encuentro con los siguientes
> inconvenientes:
>
> 1) Usando la clase CRecordset no encuentro la forma de
> levantar Stored Procedures, conocen alguna forma de
> hacerlo ?
>
> 2) Usando las fuentes de datos ADO: Connection y toda su
> familia pude acceder y recuperar registros de un Stored
> Procedure el problema que encuentro es que no me da el
> total de registros que trae el recordset, saben de alguna
> de forma de obtener este dato ?
> Desde ya les agradezco.
>


Respuesta Responder a este mensaje
#3 Jorge A S
18/08/2003 - 16:05 | Informe spam
Jorge, te agradezco por la respuesta y te comento que el
problema que tengo es que puedo recorrer el recordset en
un solo sentido hasta llegar al final y sacar el total de
registros, todo esto lo hago antes de cargar los
resultados, el problema surge cuando ejecuto MoveFirst()
para recorrerla de nuevo y asi cargar los resultados, me
da un error y se cuelga el programa es como si esta
funciòn no se soportarìa.
Igualmente rescato eso de hacer dos consultas lo voy a
probar a ver que resultados me trae. Un abrazo y gracias
nuevamente.

Estuve buscando algo de informacion en la ayuda MSND,


claro, desde VB que es
lo que mas entiendo y vi lo siguiente:


Dim rs As New ADODB.Recordset
sql = "Select * from authors Where year_born is not


null; " _
& "Select * From authors Where year_born is null"
rs.Open sql, cn
Do
i = MsgBox("¿Mostrar los resultados?",


vbYesNoCancel)
If i = vbYes Then
ADOGrid1.ShowData rs
Set rs = rs.NextRecordset
End If
Loop Until rs.State = adStateClosed


buscando ayuda de ADO para VC encontre lo siguiente:

SELECT LastName, FirstName FROM Authors
WHERE LastName = 'Smith';

SELECT Title, ISBN FROM Titles
WHERE Pub_ID = 9999

#include <afxole.h>
#include <dbdao.h>

CdbDBEngine dben;
CdbWorkspace ws;
CdbDatabase dbs;
CdbRecordset rst;
LPTSTR szSelect = // Two queries...
"SELECT LastName, FirstName "
"FROM Authors WHERE LastName = 'Smith';"
"SELECT Title, ISBN FROM Titles WHERE "
"Pub_ID = 9999";

ws = dben.CreateWorkspace(...,dbUseODBC);
dbs = ws.OpenDatabase(...);
rst = dbs.OpenRecordset(szSelect);
while( rst.NextRecordset())
{ ... // Process each query...
if (Error)
rst.Cancel();
else
rst.Update();
...
}
rst.Close();
espero que te sea de utilidadsaludos





"Jorge Eastman" escribió en el


mensaje
news:
Hola tocayo...


La verdad que no se nada de VC, pero en otros entornos




de desarrollo, por
lo
general no conoces el número de registros hasta que no




llegas al último,
para ello se hace un ciclo que recorra el recordSet




hasta que sea EOF, los
recordSet tienen esa propiedad.

Ahora, si por alguna circunstancia particular necesitas




conocer el número
de
registros antes de comenzar a procesarlos localmente,




yo lo que hago es:

creo un SP con dos consultas, la primera con la misma




condicion, tablas y
demas como la que se traera los datos, pero solo con um




campo de la forma
siguiente

select count(*) as cantidad
from tabla
where condicion

luego la consulta que me retorna los datos

select *
from tabla
where condicion

del lado del cliente esto se recibe como un conjunto de




resultado, en RDO
con VB al consultar el recorset tenermos los resultados




de la primera
consulta, para poder ver los resultados de la segunda




algo algo como esto

if not rs.MoreResults then
.
endif

con esto le indico a RDO que mi conjunto de registros




actuales serán los
del
segundo conjunto

se que en ADO existe algo similar, pero no se como se




llama, estoy es para
darte una pista que espero que te sea de utilidad

Un saludo


"Jorge A S" escribió en el




mensaje
news:01e901c36367$edc444b0$
> Buenas a todos, les comento que estoy haciendo




consultas
> a una base en SQL Server y me encuentro con los




siguientes
> inconvenientes:
>
> 1) Usando la clase CRecordset no encuentro la forma




de
> levantar Stored Procedures, conocen alguna forma de
> hacerlo ?
>
> 2) Usando las fuentes de datos ADO: Connection y




toda su
> familia pude acceder y recuperar registros de un




Stored
> Procedure el problema que encuentro es que no me da el
> total de registros que trae el recordset, saben de




alguna
> de forma de obtener este dato ?
> Desde ya les agradezco.
>






.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida