martes, marzo 07, 2006

Problema al abrir tabla

SOLUCIÓN PROPUESTA
Lo ideal siempre sera utilizar Procedimientos Almacenados
1.- Por Seguridad
2.- Por Velocidad

Por lo cual me uno a la respuesta de Maxi, sobre todo si tienes un millon de
registros.

Pero ciertamente tienes que aprender un conjunto de habilidades adicionales.

Pero esto te puede servir de referencia

Set cmdComando as New ADODB.COommand
Set cmdComando.ActiveConection = cn
With cmdComando
.CommandType = adCmdStoredProcedure
.CommandText = "NombreProcedimentoAlmacenado"
.Paraneters,Append.CreateParameter("@Parametro1", adInterger, adParamInput)
.Paraneters,Append.CreateParameter("@Parametro2", adInterger, adParamInput)
'Tantos parametros como te sean necesarios
End With
Set rsRecordset = New ADODB.Recordset
rsRecordset.Open cmdComando

Este procedimiento llenaria tu recordset con la información que te devuelva
el procedimiento almacenado.

Un punto importante es que no necesitas regresar el millon de registros, en
el procedimiento. Mas bien deberias regresar un conjunto de resultados menor
que contenga la información que deseas mostrar.


MENSAJE ORIGINAL
"Maxi [Mvp]" wrote:

> Hola, estas pasando 1M de registros? pues te diria que revises muy bien esa
> aplicacion, no es para nada recomendado hacer esto. Para que pasar de un
> lado a otro todo si luego quizas usamos poco? solo pasa lo que necesitas.
>
> Para todo lo que es CRUD (Create Read Update Delete) te recomiendo Stores
> procedures.
>
> --
>
> Saludos
>
> ----------------------------------------
> Buenos Aires - Argentina
> [Microsoft MVP SQL SERVER]
> www.sqlgurus.org
> -----------------------------------------------
> "Luis M" wrote in message
> news:eV2FbIiQGHA.1096@TK2MSFTNGP11.phx.gbl...
> > Gracias Isaias, pues esta tabla debe tener aproximadamente 1 millón de
> > registros.
> >
> > Cuál opción me sugieres para subir registros nuevos? he pensado que
> > utilizando el comando "INSERT INTO" de la conexion.
> >
> > Gracias
> >
> > Luis
> > "Isaias" escribió en el mensaje
> > news:2EC86CA1-3969-4A0D-99B8-68CD02343B29@microsoft.com...
> >> ¿Porque llevar al front el contenido TOTAL de los registros de una
> >> tabla?,¿De
> >> cuantos registros estamos hablando?
> >> --
> >> Saludos
> >> IIslas
> >>
> >>
> >> "Luis M" escribió:
> >>
> >>> Amigos,
> >>>
> >>> Utilizando ADO estoy ingresando registros en una BD SQL, donde hay una
> >>> tabla
> >>> con muchos registros que me demora un poco la conexión y por eso,
> >>> coloqué la
> >>> propiedad cn.connectiontimeout en 0 (cero) y se conecta sin problemas
> >>> pero
> >>> luego al tratar de abrir la tabla con la siguiente instrucción me
> >>> reporta
> >>> que se agotó el tiempO de espera:
> >>>
> >>> rs.Open "TABLA", cn, adOpenKeyset, adLockOptimistic, adCmdTable
> >>>
> >>> Le agregué la opció de reintentar si el estado del recordset es cerrado
> >>> pero, aún así, no logra abrir dicha tabla.
> >>>
> >>> Por favor su ayuda.
> >>>
> >>> Gracias,
> >>>
> >>> Luis Medina

REFERNCIA EN EL GRUPO DE NOTICIAS:
http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.es.sqlserver&mid=00637061-2fcc-4121-b458-43b4741b0a6b&cid=c3325244-808a-4d81-b6cc-69ce97e44d20

2 Comments:

At 9:21 AM, Luis said...

Raul, gracias por tu ayuda, me das una idea de manejar estos procedimientos.
Necesito entonces también saber cómo los creo o los modifico. Conoces algún
sitio web donde pueda informarme sobre todos estos temas?


Gracias

Luis

 
At 9:37 AM, Raúl Guerrero said...

Estimado Luis,

Escribir un procedimiento almacenado en una base de datos como sql server es bastante sencillo.

Regularmente tu realizarias una consulta a la base de datos de la siguiente manera.

SELECT ColumnaA, ColumnaB FROM Tabla1

Esto mismo lo puedes pasar a un procedimiento almacenado comm

CREATE PROCEDURE miProcedimientoAlmacenado
AS

SELECT ColumnaA, ColumnaB FROM Tabla1

GO

Ahora que si lo que quisieras es mandar un parametro para filtrar la consulta entonces se veria de la siguiente forma:
CREATE PROCEDURE miProcedimientoAlmacenado
@Parametro1 int
AS

SELECT ColumnaA, ColumnaB FROM Tabla1 WHERE ColumnaA = @Parametro1

GO

Si quieres utilizar mas de un parametro entonces se veria asi.

CREATE PROCEDURE miProcedimientoAlmacenado
@Parametro1 int,
@Parametro1 nvarchar(50),
@Parametro1 bit

AS
......
GO

Si quieres saber mas de estos temas puedes buscar stored procedures en los libros en pantalla de sql server.

O también puedes revisar estas ligas que me sirvieron como Guia para Responderte.

http://www.4guysfromrolla.com/webtech/111499-1.shtml

http://databases.about.com/od/sqlserver/l/aastoredprocs.htm


Saludos

 

Publicar un comentario en la entrada

<< Home