![]() |
| |||||||
| Registrarse | Preguntas Frecuentes | Lista de Foreros | Calendario | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
| | LinkBack | Herramientas | Desplegado |
| |||
| 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) |
| | ||||
| ||||
| |
| |||
| "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. |
| |||
| "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. |
| |||
| "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. |
| |||
| "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 |
| |||
| "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 |
| |||
| "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 |
| |||
| "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. |
| |||
| "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. |
| |||
| "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. |
| |
| |
![]() |
| Herramientas | |
| Desplegado | |
| |
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 |