Sobre DataSet y Fill

16/06/2006 - 15:33 por news.microsoft.com | Informe spam
Hola,
Soy otro principiante.

Quiero hacer un form que me actualice una tabla pero no quiero hacer una
llamada a FILL en el form.Load(). Es decir quisiera que no me cargue nada
desde el principio sino que la carga sea a peticion, que si yo le doy al
botoncito "ultimo" me cargue el ultimo (solamente ese), si le doy al
botoncito "primero" me cargue el primero (solamente ese) y asi
sucesivamente.

Se puede eso facil en C Sharp, porque sino la verdad que me desencanta mucho
este lenguaje. Imaginense es para trabajar con tablas que tienen millones
de registros.

Preguntas similare

Leer las respuestas

#6 Juan Diego Bueno Prieto
16/06/2006 - 21:40 | Informe spam
Mira, una opción para hacerlo como tu dices... podría ser usar el
equivalente de rowid de oracle, que en SQL Server 2005 se llama row_number,
y en 2000 se haría utilizando un identity dentro de la consulta

http://www.databasejournal.com/feat...hp/3572301

Así tranquilamente, si que se puede hacer referencia por un id por el que
moverse y hacer la consulta


"Juan Diego Bueno Prieto" escribió en el mensaje
news:O%
Y dime, como puedes obtener la id a la que quieres ir sin tener previamente
las ids almacenadas en alguna parte?, porque no creo que tengan que ser
necesariamente autonuméricos, y aunque lo fueran, se podría romper la
secuencia con un solo delete. Yo interpreto es que quiere hacer algun tipo
de visor de registros, y desde luego, sin tener inicialmente las ids,
dificilmente puedes moverte sobre ellas. Por ejemplo, si la clave principal
es un nif, como sabe a que nif tiene que ir al dar a siguiente sin tener el
nif previamente almacenado en alguna parte?. Lo que acabas de proponer es
lo mismo que hizo Vyacheslav, pero obviando que de alguna manera, has de
tener las ids para realizar la consulta, y eso, pese a quien pese... o los
obtienes todos de una tacada, o se hace algun tipo de procedimiento
almacenado que use cursores y se le llama dando como argumento a que
registro se quiere ir (primero,anterior, siguiente, ultimo). Ésta bajo mi
punto de vista es la única manera de traerse registro por registro sin
cargar previamente las claves principales



"Alfredo Novoa" escribió en el mensaje
news:
On Fri, 16 Jun 2006 20:45:55 +0200, "Juan Diego Bueno Prieto"
wrote:

A mi no me parece tan tontería, de esta forma solo cargas en memoria las
claves principales,



De millones de registros, que es precisamente lo que te acaban de
decir que no quieren hacer.

Con lo fácil que es cargar un solo registro usando SQL.

- Una, obtener un datatable con ese registro solo (aunque esto no me
parece
una buena idea)
- Otra opción, un datareader con una consulta que filtre solo ese
registro
para mostrarlo, cambiar lo cambiable, y con un SqlCommand, actualizarlo



Esto se puede hacer directamente con un consulta sin tener que cargar
primero los millones de claves, y no tiene por que ser una mala idea.

Dado que tu eres partidario de alojar las reglas de negocio en el SGBD,
que
propondrías, un procedimiento almacenado?



Esto no es ninguna regla de negocio.


Saludos
Alfredo




Respuesta Responder a este mensaje
#7 Alfredo Novoa
16/06/2006 - 22:04 | Informe spam
On Fri, 16 Jun 2006 21:20:21 +0200, "Juan Diego Bueno Prieto"
wrote:

Y dime, como puedes obtener la id a la que quieres ir sin tener previamente
las ids almacenadas en alguna parte?



Está tirado, ya están almacenadas en la tabla. Mira el ejemplo que le
puse a Popov.

Para leer el primero lo puedes hacer con:

select top 1 * from empleados order by id

o también con:

select * from empleados where id=(select min(id) from empleados)

El siguiente es el que tiene el menor de los id mayores que el actual.

select top 1 * from empleados where id>:actual order by id

o también:

select * from empleados where id=(select min(id) from empleados where
id >:actual)

Ahora el anterior:

select top 1 * from empleados where id<:actual order by id desc


Por eso digo que viene bastante bien saber un poquito de bases de
datos :)

Saludos
Alfredo
Respuesta Responder a este mensaje
#8 Juan Diego Bueno Prieto
16/06/2006 - 22:24 | Informe spam
Cierto, tienes razón. Vale incluso aunque la clave principal sea una cadena.
No lo había visto desde este punto de vista. Me apunto la idea, porque es
interesante, aunque sería más cómodo usar el rownumber que puse en el otro
post para estos menesteres, bajo mi punto de vista, ya que es numérico
(Por cierto, no siempre es falta de conocimiento de BDs, sino dar con la
tecla adecuada)


Saludos

"Alfredo Novoa" escribió en el mensaje
news:
On Fri, 16 Jun 2006 21:20:21 +0200, "Juan Diego Bueno Prieto"
wrote:

Y dime, como puedes obtener la id a la que quieres ir sin tener
previamente
las ids almacenadas en alguna parte?



Está tirado, ya están almacenadas en la tabla. Mira el ejemplo que le
puse a Popov.

Para leer el primero lo puedes hacer con:

select top 1 * from empleados order by id

o también con:

select * from empleados where id=(select min(id) from empleados)

El siguiente es el que tiene el menor de los id mayores que el actual.

select top 1 * from empleados where id>:actual order by id

o también:

select * from empleados where id=(select min(id) from empleados where
id >:actual)

Ahora el anterior:

select top 1 * from empleados where id<:actual order by id desc


Por eso digo que viene bastante bien saber un poquito de bases de
datos :)

Saludos
Alfredo
Respuesta Responder a este mensaje
#9 CMCC
16/06/2006 - 22:51 | Informe spam
Alfredo Novoa wrote:
wrote:

>Dado que tu eres partidario de alojar las reglas de negocio en el SGBD, que
>propondrías, un procedimiento almacenado?

Esto no es ninguna regla de negocio.




Ah! que si fuese un regla de nogocio hubieras 'procedido a almacenarla'
EH?

;-)

Saludos,
Carlos
Respuesta Responder a este mensaje
#10 CMCC
16/06/2006 - 23:19 | Informe spam
Alfredo Novoa wrote:
wrote:

>Dado que tu eres partidario de alojar las reglas de negocio en el SGBD, que
>propondrías, un procedimiento almacenado?

Esto no es ninguna regla de negocio.



Ah! que si fuese una regla de nogocio hubieras 'procedido a
almacenarla'
EH?

;-)

Saludos,
Carlos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida