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 16-06-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
ir a la posicion de un registro específico

Hola a Todos...

Estoy realizando una aplicación que me permite elegir los ganadores para un concurso.

Los ganadores se sortean de acuerdo a las personas que han comprados abonos. Los datos los tengo almacenados en una tabla de SQL Server. Para realizar la elección del numero, lo que realizo primero es obtener la cantidad de abonos vendidos, para lo cual realizo un

Código SQL [-]
 
Select Count(*) from vendidos

Luego aplico un Ramdon al valor anterior, lo que me dará el Numero (posición) del Ganador.

Código Delphi [-]
Ramdon(Total_Abonos_Vendidos)

Mi consulta es como me posiciciono en el Registro que fue Sorteado ???

Se que el RecNo me entrega la posición, pero como me posiciono en el registro del valor que me entrega el Ramdon???

Salu2
__________________
BlueSteel

Última edición por BlueSteel fecha: 16-06-2008 a las 20:43:02.
Responder Con Cita
  #2  
Antiguo 16-06-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por BlueSteel Ver Mensaje
Mi consulta es como me posiciciono en el Registro que fue Sorteado ???

Se que el RecNo me entrega la posición, pero como me posiciono en el registro del valor que me entrega el Ramdon???

RecNo?, Es una función? en que versión de SQlServer está?
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #3  
Antiguo 16-06-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cool

Hola Poliburro...

Estoy en SQLServer 2000

si realizo

Código Delphi [-]
 
 Edit1.Text := IntToStr(ADQ_Select.RecNo);

me entregará la posición del registro en la cual me ubico....


pero lo que tengo como dato, es la posición... entonces lo que quiero realizar es alguna función que se posicione en la "posición", valga la redundancia, que le estoy entregando...


Sorry... pero lo estoy trabajando desde el Delphi 7..... a lo mejor eso te confundio,, y pensastes que RecNo es una función del SQL Server...

Salu2
__________________
BlueSteel

Última edición por BlueSteel fecha: 16-06-2008 a las 21:00:32. Razón: falto explicación
Responder Con Cita
  #4  
Antiguo 16-06-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Código SQL [-]
 
-- =============================================
-- Create procedure basic template
-- =============================================
-- creating the store procedure
IF EXISTS (SELECT name 
    FROM   sysobjects 
    WHERE  name = N'GetIdByPos' 
    AND    type = 'P')
    DROP PROCEDURE GetIdByPos
GO
CREATE PROCEDURE GetIdByPos (@RecNo As Int, @RowId As Int Output)
 
AS

CREATE TABLE #Temporal (RecNo Int IDENTITY(1,1), 
                                    [RowId] [numeric](6, 0))
Insert 
  Into #Temporal  (rowId) 
  Select FieldId From Table
 
Select @RowId = RowId
  From #Temporal
 Where RecNo = @RecNo
 
Drop Table #Temporal

GO
Return
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #5  
Antiguo 16-06-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cool

Gracias amigo poliburro

cada vez me impresionas más.....

ahora, donde agrego esto.. y como lo utilizo desde delphi ???

Al final los datos los estoy trabajando desde un Vista, en donde tienen todos los datos que necesitaba

Salu2
__________________
BlueSteel
Responder Con Cita
  #6  
Antiguo 16-06-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Me explico,


Este procedimiento crea una tabla temporal con una columna identity que simula el RecNo de ADO y el RowNum de Oracle.

En esta tablatemporal vas a insertar el campo id de la tabla de donde deseas sacar el registro en la posición deseada.

A este procedimiento le pasas que número de registro que deseas y te devolverá el Id correspondiente a esa posición.

con el id puedes obtener toda la fila.

Espero haber comprendido tu problema, si no, con confianza pregunta
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #7  
Antiguo 17-06-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cool

Bueno...

te cuento, con lo que me distes, al final realice un procedimiento para crear la tabla y trabajar sobre ella... así que despues solo utilizo el locate para ubicar la posición...

gracias por tu ayuda... me sirvio bastante...

Salu2
__________________
BlueSteel
Responder Con Cita
  #8  
Antiguo 17-06-2008
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
No se si con ADO es igual que con otros conectores, pero si le asignas un valor a RecNo, el cursor se para en dicha posición...
Por ejemplo

Código Delphi [-]
AdoDataset1.RecNo := 250;

Y listo, pero bueno, de ahí a la eficiencia de esto, pues no creo que sea mejor que traer el dato de una vez, como lo ha planteado poliburro.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #9  
Antiguo 17-06-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cool

Cita:
Empezado por jhonny Ver Mensaje
No se si con ADO es igual que con otros conectores, pero si le asignas un valor a RecNo, el cursor se para en dicha posición...
Por ejemplo


Código Delphi [-]AdoDataset1.RecNo := 250;



Y listo, pero bueno, de ahí a la eficiencia de esto, pues no creo que sea mejor que traer el dato de una vez, como lo ha planteado poliburro.
Hola Jhonny...

bueno, antes de preguntar habia probado eso pero con un ADOQuery.. pero no me funciono....


Salu2
__________________
BlueSteel
Responder Con Cita
  #10  
Antiguo 17-06-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola BlueSteel, yo he utilizado RecNo con Ado y si me ha funcionado.

Código Delphi [-]
 AdoQuery1.RecNo := 5;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #11  
Antiguo 17-06-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por BlueSteel Ver Mensaje
Hola Jhonny...

bueno, antes de preguntar habia probado eso pero con un ADOQuery.. pero no me funciono....


Salu2

Tiene que ver con la manera en que defines la propiedad cursor.

Aunque a mi, como lo has notado me gusta cargarle la mano al motor, que él se encargue de procesar los datos que para eso fué hecho.
Y delphi para proporcionarle al usuario la manera de interactuar con esa información.

Ojo, es cuestión de enfoques. Al principio yo era como todos, programando todo en delphi, pero tras los jalones de orejas que me dieron varios Maestros DBAs y arquitectos de BI, aprendí a explotar el poder de las bases de datos.

Saludos
__________________
Conoce mi blog http://www.edgartec.com

Última edición por poliburro fecha: 17-06-2008 a las 04:53:36. Razón: ortografía
Responder Con Cita
  #12  
Antiguo 17-06-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jhonny Ver Mensaje
No se si con ADO es igual que con otros conectores, pero si le asignas un valor a RecNo, el cursor se para en dicha posición...
Revisa que estés cargando todos los registros en memoria (CursorLocation del ADOConnection y ADOQuery) sino me temo que esto puede no funcionar.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
mover indicador de un dbgrid a un registro especifico thelibmx Conexión con bases de datos 7 09-11-2007 18:52:51
Posicionarme en un registro especifico de un record Carliviris Varios 1 20-11-2006 18:35:41
Posicion de un registro en un DBGrid VRO OOP 6 27-10-2004 10:22:57
Problemas al guardar la posicion de una ventana en el registro neon Varios 1 21-10-2004 11:01:15
Posicion del registro?? andresenlared Conexión con bases de datos 3 30-12-2003 08:08:07


La franja horaria es GMT +2. Ahora son las 16:44:42.


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