Newsgrupos.com  

Retroceder   Newsgrupos.com > Forum > Newsgroup microsoft.public.es.* 1 Foro > Newsgroup microsoft.public.es.dotnet.vb
Registrarse Preguntas Frecuentes Lista de Foreros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 26-08-2008, 23:52:25
AlanCSR
 
Mensajes: n/a
Predeterminado Como obtener el valor maximo de una columna de un dataset

Tengo esto:

dsDatos = New DataSet
Dim sbComandoSQL As StringBuilder = New StringBuilder()
sbComandoSQL.Append("SELECT Año, ")
sbComandoSQL.Append(" Mes, ")
sbComandoSQL.Append(" TipoDeVoucher, ")
sbComandoSQL.Append(" NumeroDeVoucher, ")
sbComandoSQL.Append(" Descripcion, ")
sbComandoSQL.Append(" NumeroCheque, ")
sbComandoSQL.Append(" Fecha, ")
sbComandoSQL.Append(" Sistema, ")
sbComandoSQL.Append(" Usuario ")
sbComandoSQL.Append("FROM dbVoucherGlosa ")
sbComandoSQL.Append("ORDER BY Año, Mes, TipoDeVoucher,
NumeroDeVoucher")

Dim daAdaptador As New SqlDataAdapter(sbComandoSQL.ToString,
cnConexion)
dsDatos.Clear()
daAdaptador.Fill(dsDatos, "Glosa")

'Asignado la llave de búsqueda a la tabla de la glosa
Dim keys(3) As DataColumn
keys(0) = dsDatos.Tables("Glosa").Columns("Año")
keys(1) = dsDatos.Tables("Glosa").Columns("Mes")
keys(2) = dsDatos.Tables("Glosa").Columns("TipoDeVoucher")
keys(3) = dsDatos.Tables("Glosa").Columns("NumerodeVoucher")
dsDatos.Tables("Glosa").PrimaryKey = keys

Lo que deseo conseguir es:

El valor máximo de NumeroDeVoucher
para cuando se cumpla que:
(Año = 2008) and (Mes = 03) and (TipoDeVoucher = 'A1')

Tabla Glosa:
----------------
2008 03 A1 1
2008 03 A1 2
2008 03 A1 3
2008 03 A1 4
....
2008 03 A1 25
2008 03 B1 1
2008 03 B2 1


He intentado usar esto:

Dim NumeroNuevo As Integer = _
Convert.ToInt32(dsDatos.Tables("Glosa").Select("ma x(NumeroDeVoucher)")) + 1

Por lo que NuevoNumero deberia ser = 26

Espero su orientación.

Alan Salazar
(VB.Net 2008 + SQL S2K)


Responder Con Cita
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Newsgrupos.com
Standard Sponsored Links

  #2 (permalink)  
Antiguo 27-08-2008, 09:09:13
SoftJaén
 
Mensajes: n/a
Predeterminado Re: Como obtener el valor maximo de una columna de un dataset

"AlanCSR" preguntó:
>
> Lo que deseo conseguir es:
>
> El valor máximo de NumeroDeVoucher
> para cuando se cumpla que:
> (Año = 2008) and (Mes = 03) and (TipoDeVoucher = 'A1')


Alan, es difícil que obtengas el valor máximo de una columna de un objeto
DataSet, porque éste objeto, todavía no tiene ni columnas ni filas. :-))

Puedes obtener el valor máximo de una columna de un objeto DataTable
mediante una llamada a su método «Compute»:

' Referenciamos el objeto DataTable
'
Dim dt As DataTable = dsDatos.Tables("Glosa")

' Obtenemos el valor máximo de la columna que cumpla
' con el criterio especificado.
'
Dim valorMaximo As Object = _
dt.Compute("MAX(NumeroDeVoucher)", _
"Año=2008 AND Mes='03' AND TipoDeVoucher='A1'")

If Not IsDBNull(valorMaximo) Then
MessageBox.Show(CStr(valorMaximo))
Else
MessageBox.Show("No existe ning£n valor.")
End If

Entiendo que el campo MES es alfanumérico. Si es numérico, no hace falta que
el valor lo encierres entre comillas simples.

Te aconsejaría, y muy a pesar mío, que al nombre del campo «Año» le quitases
la eñe. Por ejemplo, podría llamarse «Anio».

--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Responder Con Cita
  #3 (permalink)  
Antiguo 27-08-2008, 09:09:13
SoftJaén
 
Mensajes: n/a
Predeterminado Re: Como obtener el valor maximo de una columna de un dataset

"AlanCSR" preguntó:
>
> Lo que deseo conseguir es:
>
> El valor máximo de NumeroDeVoucher
> para cuando se cumpla que:
> (Año = 2008) and (Mes = 03) and (TipoDeVoucher = 'A1')


Alan, es difícil que obtengas el valor máximo de una columna de un objeto
DataSet, porque éste objeto, todavía no tiene ni columnas ni filas. :-))

Puedes obtener el valor máximo de una columna de un objeto DataTable
mediante una llamada a su método «Compute»:

' Referenciamos el objeto DataTable
'
Dim dt As DataTable = dsDatos.Tables("Glosa")

' Obtenemos el valor máximo de la columna que cumpla
' con el criterio especificado.
'
Dim valorMaximo As Object = _
dt.Compute("MAX(NumeroDeVoucher)", _
"Año=2008 AND Mes='03' AND TipoDeVoucher='A1'")

If Not IsDBNull(valorMaximo) Then
MessageBox.Show(CStr(valorMaximo))
Else
MessageBox.Show("No existe ning£n valor.")
End If

Entiendo que el campo MES es alfanumérico. Si es numérico, no hace falta que
el valor lo encierres entre comillas simples.

Te aconsejaría, y muy a pesar mío, que al nombre del campo «Año» le quitases
la eñe. Por ejemplo, podría llamarse «Anio».

--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Responder Con Cita
  #4 (permalink)  
Antiguo 27-08-2008, 09:09:13
SoftJaén
 
Mensajes: n/a
Predeterminado Re: Como obtener el valor maximo de una columna de un dataset

"AlanCSR" preguntó:
>
> Lo que deseo conseguir es:
>
> El valor máximo de NumeroDeVoucher
> para cuando se cumpla que:
> (Año = 2008) and (Mes = 03) and (TipoDeVoucher = 'A1')


Alan, es difícil que obtengas el valor máximo de una columna de un objeto
DataSet, porque éste objeto, todavía no tiene ni columnas ni filas. :-))

Puedes obtener el valor máximo de una columna de un objeto DataTable
mediante una llamada a su método «Compute»:

' Referenciamos el objeto DataTable
'
Dim dt As DataTable = dsDatos.Tables("Glosa")

' Obtenemos el valor máximo de la columna que cumpla
' con el criterio especificado.
'
Dim valorMaximo As Object = _
dt.Compute("MAX(NumeroDeVoucher)", _
"Año=2008 AND Mes='03' AND TipoDeVoucher='A1'")

If Not IsDBNull(valorMaximo) Then
MessageBox.Show(CStr(valorMaximo))
Else
MessageBox.Show("No existe ning£n valor.")
End If

Entiendo que el campo MES es alfanumérico. Si es numérico, no hace falta que
el valor lo encierres entre comillas simples.

Te aconsejaría, y muy a pesar mío, que al nombre del campo «Año» le quitases
la eñe. Por ejemplo, podría llamarse «Anio».

--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Responder Con Cita
  #5 (permalink)  
Antiguo 27-08-2008, 19:12:53
AlanCSR
 
Mensajes: n/a
Predeterminado Re: Como obtener el valor maximo de una columna de un DataTable

"SoftJaén" escribió:

> Alan, es difícil que obtengas el valor máximo de una columna de un objeto
> DataSet, porque éste objeto, todavía no tiene ni columnas ni filas. :-))


Ni vuelta que darle, me equivoque al escribir, debería haber puesto
DataTable en lugar de dataset. Tengo claro el concepto de dataset y
datatables por algunas aclaraciones hechas por ti anteriormente. Eso esta
bien aprendido.



> ' Referenciamos el objeto DataTable
> Dim dt As DataTable = dsDatos.Tables("Glosa")


PREGUNTA:
Mi tabla "Glosa" tiene unos 900,000 registros, al hacer esto:
Estoy creando una copia de todo el contenido en dt ó ....?




> Dim valorMaximo As Object = _
> dt.Compute("MAX(NumeroDeVoucher)", _
> "Año=2008 AND Mes='03' AND TipoDeVoucher='A1'")


Era exactamente lo que buscaba. Gracias nuevamente por ayudarme.




> Te aconsejaría, y muy a pesar mío, que al nombre del campo «Año» le
> quitases la eñe. Por ejemplo, podría llamarse «Anio».


PREGUNTA:
Podrías darme una razón mas explicita del Por qué?.



Alan Salazar


Responder Con Cita
  #6 (permalink)  
Antiguo 27-08-2008, 19:12:53
AlanCSR
 
Mensajes: n/a
Predeterminado Re: Como obtener el valor maximo de una columna de un DataTable

"SoftJaén" escribió:

> Alan, es difícil que obtengas el valor máximo de una columna de un objeto
> DataSet, porque éste objeto, todavía no tiene ni columnas ni filas. :-))


Ni vuelta que darle, me equivoque al escribir, debería haber puesto
DataTable en lugar de dataset. Tengo claro el concepto de dataset y
datatables por algunas aclaraciones hechas por ti anteriormente. Eso esta
bien aprendido.



> ' Referenciamos el objeto DataTable
> Dim dt As DataTable = dsDatos.Tables("Glosa")


PREGUNTA:
Mi tabla "Glosa" tiene unos 900,000 registros, al hacer esto:
Estoy creando una copia de todo el contenido en dt ó ....?




> Dim valorMaximo As Object = _
> dt.Compute("MAX(NumeroDeVoucher)", _
> "Año=2008 AND Mes='03' AND TipoDeVoucher='A1'")


Era exactamente lo que buscaba. Gracias nuevamente por ayudarme.




> Te aconsejaría, y muy a pesar mío, que al nombre del campo «Año» le
> quitases la eñe. Por ejemplo, podría llamarse «Anio».


PREGUNTA:
Podrías darme una razón mas explicita del Por qué?.



Alan Salazar


Responder Con Cita
  #7 (permalink)  
Antiguo 27-08-2008, 19:12:53
AlanCSR
 
Mensajes: n/a
Predeterminado Re: Como obtener el valor maximo de una columna de un DataTable

"SoftJaén" escribió:

> Alan, es difícil que obtengas el valor máximo de una columna de un objeto
> DataSet, porque éste objeto, todavía no tiene ni columnas ni filas. :-))


Ni vuelta que darle, me equivoque al escribir, debería haber puesto
DataTable en lugar de dataset. Tengo claro el concepto de dataset y
datatables por algunas aclaraciones hechas por ti anteriormente. Eso esta
bien aprendido.



> ' Referenciamos el objeto DataTable
> Dim dt As DataTable = dsDatos.Tables("Glosa")


PREGUNTA:
Mi tabla "Glosa" tiene unos 900,000 registros, al hacer esto:
Estoy creando una copia de todo el contenido en dt ó ....?




> Dim valorMaximo As Object = _
> dt.Compute("MAX(NumeroDeVoucher)", _
> "Año=2008 AND Mes='03' AND TipoDeVoucher='A1'")


Era exactamente lo que buscaba. Gracias nuevamente por ayudarme.




> Te aconsejaría, y muy a pesar mío, que al nombre del campo «Año» le
> quitases la eñe. Por ejemplo, podría llamarse «Anio».


PREGUNTA:
Podrías darme una razón mas explicita del Por qué?.



Alan Salazar


Responder Con Cita
  #8 (permalink)  
Antiguo 28-08-2008, 05:56:10
SoftJaén
 
Mensajes: n/a
Predeterminado Re: Como obtener el valor maximo de una columna de un DataTable

"AlanCSR" preguntó:

>> ' Referenciamos el objeto DataTable
>> Dim dt As DataTable = dsDatos.Tables("Glosa")

>
> PREGUNTA:
> Mi tabla "Glosa" tiene unos 900,000 registros, al hacer esto:
> Estoy creando una copia de todo el contenido en dt ó ....?


Como dice el comentario, estás referenciando el objeto DataTable, que como
cualquier otro objeto, se supone que se encuentra en lo que se denomina
«montón administrado», ya que el objeto DataTable es un tipo de dato por
referencia. ¿Creo que esto ya te lo expliqué una vez? ;-)

>> Te aconsejaría, y muy a pesar mío, que al nombre del campo «Año» le
>> quitases la eñe. Por ejemplo, podría llamarse «Anio».

>
> PREGUNTA:
> Podrías darme una razón mas explicita del Por qué?.


Al tratarse de una letra que no está contemplada por el inglés, que es el
idioma dominante en todas las herramientas de programación y motores de
bases de datos que mayoritariamente solemos utilizar, puedes llegar a tener
ciertos problemas a la hora de efectuar consultas a la base de datos. Es lo
mismo que si utilizas acentos o palabras separadas para nombrar a los campos
o a las tablas de la base de datos, cuestion ésta que no se recomienda que
se haga.

En estos casos, deberías encerrar los nombres de los campos o de las tablas
entre corchetes, a la hora de efectuar la consulta:

SELECT [año], [código cliente] FROM [Tabla de Clientes]

Con la letra Ñ puede ser que no llegues a tener los mismos problemas que
puedes tener con los nombres de los objetos formados por varias palabras,
pero yo no me fiaría del todo. :-)

--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Responder Con Cita
  #9 (permalink)  
Antiguo 28-08-2008, 05:56:10
SoftJaén
 
Mensajes: n/a
Predeterminado Re: Como obtener el valor maximo de una columna de un DataTable

"AlanCSR" preguntó:

>> ' Referenciamos el objeto DataTable
>> Dim dt As DataTable = dsDatos.Tables("Glosa")

>
> PREGUNTA:
> Mi tabla "Glosa" tiene unos 900,000 registros, al hacer esto:
> Estoy creando una copia de todo el contenido en dt ó ....?


Como dice el comentario, estás referenciando el objeto DataTable, que como
cualquier otro objeto, se supone que se encuentra en lo que se denomina
«montón administrado», ya que el objeto DataTable es un tipo de dato por
referencia. ¿Creo que esto ya te lo expliqué una vez? ;-)

>> Te aconsejaría, y muy a pesar mío, que al nombre del campo «Año» le
>> quitases la eñe. Por ejemplo, podría llamarse «Anio».

>
> PREGUNTA:
> Podrías darme una razón mas explicita del Por qué?.


Al tratarse de una letra que no está contemplada por el inglés, que es el
idioma dominante en todas las herramientas de programación y motores de
bases de datos que mayoritariamente solemos utilizar, puedes llegar a tener
ciertos problemas a la hora de efectuar consultas a la base de datos. Es lo
mismo que si utilizas acentos o palabras separadas para nombrar a los campos
o a las tablas de la base de datos, cuestion ésta que no se recomienda que
se haga.

En estos casos, deberías encerrar los nombres de los campos o de las tablas
entre corchetes, a la hora de efectuar la consulta:

SELECT [año], [código cliente] FROM [Tabla de Clientes]

Con la letra Ñ puede ser que no llegues a tener los mismos problemas que
puedes tener con los nombres de los objetos formados por varias palabras,
pero yo no me fiaría del todo. :-)

--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Responder Con Cita
  #10 (permalink)  
Antiguo 28-08-2008, 05:56:10
SoftJaén
 
Mensajes: n/a
Predeterminado Re: Como obtener el valor maximo de una columna de un DataTable

"AlanCSR" preguntó:

>> ' Referenciamos el objeto DataTable
>> Dim dt As DataTable = dsDatos.Tables("Glosa")

>
> PREGUNTA:
> Mi tabla "Glosa" tiene unos 900,000 registros, al hacer esto:
> Estoy creando una copia de todo el contenido en dt ó ....?


Como dice el comentario, estás referenciando el objeto DataTable, que como
cualquier otro objeto, se supone que se encuentra en lo que se denomina
«montón administrado», ya que el objeto DataTable es un tipo de dato por
referencia. ¿Creo que esto ya te lo expliqué una vez? ;-)

>> Te aconsejaría, y muy a pesar mío, que al nombre del campo «Año» le
>> quitases la eñe. Por ejemplo, podría llamarse «Anio».

>
> PREGUNTA:
> Podrías darme una razón mas explicita del Por qué?.


Al tratarse de una letra que no está contemplada por el inglés, que es el
idioma dominante en todas las herramientas de programación y motores de
bases de datos que mayoritariamente solemos utilizar, puedes llegar a tener
ciertos problemas a la hora de efectuar consultas a la base de datos. Es lo
mismo que si utilizas acentos o palabras separadas para nombrar a los campos
o a las tablas de la base de datos, cuestion ésta que no se recomienda que
se haga.

En estos casos, deberías encerrar los nombres de los campos o de las tablas
entre corchetes, a la hora de efectuar la consulta:

SELECT [año], [código cliente] FROM [Tabla de Clientes]

Con la letra Ñ puede ser que no llegues a tener los mismos problemas que
puedes tener con los nombres de los objetos formados por varias palabras,
pero yo no me fiaría del todo. :-)

--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Responder Con Cita
 
Respuesta


Herramientas
Desplegado

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
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Como obtengo el valor de determinada columna en un listbox? dalfa Newsgroup microsoft.public.es.vfoxpro 4 01-06-2008 22:38:40
Obtener el máximo de una columna y devolver el valor de otra columna Juan Newsgroup microsoft.public.es.excel 2 08-05-2008 17:19:37
Función como valor por defecto de una columna. José Luis Newsgroup microsoft.public.es.sqlserver 4 07-01-2008 16:41:04
Encontrar un valor maximo en una fila e identificar la columna dondese encuentra dicho valor dmirandasoto@gmail.com Newsgroup microsoft.public.es.excel 2 29-11-2007 04:00:42
Obtener el valor maximo de una columna carlos Newsgroup microsoft.public.es.dotnet.ado 8 17-11-2005 15:10:15





Powered by: vBulletin, Versión 3.6.8
Derechos de Autor ©2000 - 2008, Jelsoft Enterprises Ltd.

LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc.