Sei sulla pagina 1di 30

Estoy tratando de usar sql para sumar una columna en mi base de datos de acceso y

poner el resultado de esto en un cuadro de texto. El cdigo que tengo es el siguiente, pero
esto viene con el error abajo.
Error: la conversin del tipo 'DBNull' al tipo 'Cadena' no es vlido.
1. dbCommand = New OleDbCommand dbCommand.Connection = New
OleDbConnection(DataBase) dbCommand.Connection.Open() dbCommand.CommandText =
"SELECT SUM(TransactionAmount) FROM Transactions WHERE Budget='" &
cmbBudget.Text & "'" Reader = dbCommand.ExecuteReader While Reader.Read
TextBox1.Text = Reader.GetValue(0) End While
La (base de datos) de referencia est funcionando correctamente, ya que hay una orden
anterior de SQL encima de ste.
Cualquier ayuda muy apreciada!!!
Reader = dbCommand.ExecuteReader
Reader declarado como qu?

Dim Reader as OleDbDataReader = dbCommand.ExecuteReader

Recuperacin de valores de SELECT SUM ... en VB.NET
14 de julio 2010 22:17 | ENLACE
Varios productores tiene productos en un nmero de ubicaciones. sta funcin est destinada a
recorrer todos los lugares a los productores especficos y suma todos los eventos de
embalaje (packed_Qty) en todos los lugares de productores.
I * pensar * Tengo la instruccin SELECT correcto, pero - no por primera vez - mi problema es
conseguir que las cantidades de cada bucle y resumirlos en iTotalPackedOnLocs
Ayuda sera muy apreciada ya que necesito funciones similares para otros 3 mesas
Funcin Pblica getCurrentGrowerPackedTotal () As Integer


Dim strConnString como secuencia =
ConfigurationManager.ConnectionStrings ("tplatz_dk_dbConnectionString").
ConnectionString
Conexin Dim As New SqlConnection (strConnString)


'Buscar el total de productos envasados para el productor




'Obtener la ubicacin-ids perteneciente al productor registrados en
Iloc Dim As Integer () = funktioner.FindGrowerLocs
(funktioner.getGrowerID)


Dim iPackedOnLoc As Integer
ITotalPackedOnLocs Dim As Integer = 0


Para i = 0 To (funktioner.getGrowerMaxLocations - 1)


Comando Dim As New SqlCommand ("SELECT SUM (packed_Qty) AS DE
packedTotal [tblPacked] WHERE ([packed_GrowerLocationId] = @ ubicacin)", la
conexin)
Dim param0 como nuevo SqlParameter ("location",
System.Data.OleDb.OleDbType.Integer)
param0.Value = Iloc (i)
command.Parameters.Add (param0)


Connection.Open ()


'Problema: Para obtener el packedTotal para cada lazo y aadirlo
a iTotalPackedOnLocs




Connection.close ()
command.Parameters.Clear ()




Prximo


ITotalPackedOnLocs Volver


End Function

Saludos cordiales
Troels H. Platz

o Responder

sansan
All-Star
53.932 Puntos
8147 Mensajes
Re: Recuperar valores de SELECT SUM ... en VB.NET
14 de julio 2010 22:47 | ENLACE
probar este
Connection.Open ()
Comando Dim As New SqlCommand ("SELECT SUM (packed_Qty) AS DE
packedTotal [tblPacked] WHERE ([packed_GrowerLocationId] = @ ubicacin)", la
conexin)
Dim param0 como nuevo SqlParameter ("location",
System.Data.OleDb.OleDbType.Integer)
command.Parameters.Add (param0)
Para i = 0 To (funktioner.getGrowerMaxLocations - 1)
param0.Value = Iloc (i)
iTotalPackedOnLocs + = Convert.ToInt32 (command.ExecuteScalar
())
command.Parameters.Clear ()
Prximo
Connection.close ()
ITotalPackedOnLocs Volver

Santhosh

o Responder

sansan
All-Star
53.932 Puntos
8147 Mensajes
Re: Recuperar valores de SELECT SUM ... en VB.NET
14 de julio 2010 22:58 | ENLACE
Otra opcin es calcular el total envasado en la propia consulta.
usted puede conseguir de varias ubicaciones.
comprobar esta consulta
SELECT
LOC.LOCATIONID DISTINCT,
ISNULL (SUM (PACK.PACKEDQUANTITY)
OVER (PARTITION BY PACK.LOCATIONID), 0)
PACKEDQUANTITY FROM (
SELECT 1 LocationID
UNIN
SELECT 2 LocationID
UNIN
SELECT 3 LocationID) LOC
LEFT OUTER JOIN
(SELECCIONAR 1 LocationID, 10 PACKEDQUAN ENTITY
UNIN
SELECT 2 LocationID, 20 PACKEDQUAN ENTITY
UNIN
SELECT 2 LocationID, 30 PACKEDQUAN ENTITY
UNIN
SELECT 2 LocationID, 60 PACKEDQUAN ENTITY
) PAQUETE
EN LOC.LOCATIONID = PACK.LOCATIONID
- DONDE LOC.LOCATIONID en (1,2);
Esto calcula PackedQuantity para una ubicacin y devuelve la ubicacin, as
si obtiene del total de la consulta, puede pasar varias llamadas de base de datos porque se est
llamando para cada ubicacin.
si una consulta de este tipo, que es slo un acuerdo de tiempo para obtener el total de cada
ubicacin.
Santhosh

o Responder

TPlatz
Miembro
139 Puntos
98 Mensajes
Re: Recuperar valores de SELECT SUM ... en VB.NET
14 de julio 2010 23:11 | ENLACE
Modificar el cdigo de la siguiente manera:
Connection.Open ()




Comando Dim As New SqlCommand ("SELECT SUM (packed_Qty) AS DE
packedTotal [tblPacked] WHERE ([packed_GrowerLocationId] = @ ubicacin)", la
conexin)
Dim param0 como nuevo SqlParameter ("location",
System.Data.OleDb.OleDbType.Integer)


command.Parameters.Add (param0)
param0.Value = Iloc (i)
iTotalPackedOnLocs + = Convert.ToInt32 (command.ExecuteScalar
())
command.Parameters.Clear ()


Connection.close ()

Ahora me sale un error de la lnea con el ExecuteScalar: El objeto no se puede lanzar desde
DBNull a otros tipos.
Un poco de las pruebas indican que esto es debido a que algunos lugares (iLoc (i)) en el
TestDatabase todava no tiene ningn registro (cambiando el iLoc og ndice para un ndice con
los registros reales funciona bien, excepto para multiplicar un poco a causa del bucle) . Ahora,
cmo puedo manejar esto - Intente / excepcin catch / final intentarlo?
Saludos cordiales
Troels H. Platz

o Responder

TPlatz
Miembro
139 Puntos
98 Mensajes
Re: Recuperar valores de SELECT SUM ... en VB.NET
14 de julio 2010 23:18 | ENLACE
Sansan - su segunda sugerencia suena muy bien, pero por ahora voy a ir con la primera para
seguir adelante con esto - el segundo tomar algn estudio, ya que el SQL usado est fuera de
mi alcance, pero voy a trabajar en eso. Hasta ahora me concentrar sobre el manejo de los nulos
errores con ubicaciones "vacos"
Saludos cordiales
Troels H. Platz

o Responder

sansan
All-Star
53.932 Puntos
8147 Mensajes
Re: Recuperar valores de SELECT SUM ... en VB.NET
14 de julio 2010 23:20 | ENLACE
mi mal, pens que hay una clara relacin con la tabla de localizacin de los padres
hacer esto
usted puede hacer incluso en la propia consulta,
ISNULL (SUM (packed_Qty), 0) AS packedTotal
pero el cdigo es mejor en este contexto
Dim objTotal As New Object ()
objTotal = command.ExecuteScalar ();
Si (objTotal! = DBNull.Value) Entonces
iTotalPackedOnLocs + = Convert.ToInt32 (objTotal)
End If;
Santhosh

o Responder

TPlatz
Miembro
139 Puntos
98 Mensajes
Re: Recuperar valores de SELECT SUM ... en VB.NET
14 de julio 2010 23:29 | ENLACE
Casi. Puedo ver cmo esto podra resolverlo, excepto que ahora da un error: "Se esperaba un
identificador" al =!
Dim objTotal As New Object ()
objTotal = command.ExecuteScalar ()
Si (objTotal! = DBNull.Value) Entonces
iTotalPackedOnLocs + = Convert.ToInt32 (objTotal)
End If

Saludos cordiales
Troels H. Platz

o Responder

sansan
All-Star
53.932 Puntos
8147 Mensajes
Re: Recuperar valores de SELECT SUM ... en VB.NET
14 de julio 2010 23:41 | ENLACE
Lamento que lo hice en c #
cambiar esa lnea para
Si objTotal <> System.DBNull.Value Entonces
"En lugar de
Si (objTotal! = DBNull.Value) Entonces
Santhosh

o Responder

TPlatz
Miembro
139 Puntos
98 Mensajes
Re: Recuperar valores de SELECT SUM ... en VB.NET
14 de julio 2010 23:42 | ENLACE
Bueno, probablemente me estoy cansando. Por ahora voy a ir con esto (que funciona, as que
puedo dormir en paz)
Funcin Pblica getCurrentGrowerPackedTotal () As Integer


Dim strConnString como secuencia =
ConfigurationManager.ConnectionStrings ("tplatz_dk_dbConnectionString").
ConnectionString
Conexin Dim As New SqlConnection (strConnString)


'Encuentra frdigvarer af totalen (embalado) para den aktuelle
producent


Iloc Dim As Integer () = funktioner.FindGrowerLocs
(funktioner.getGrowerID)


ITotalPackedOnLocs Dim As Integer = 0


Para i = 0 To (funktioner.getGrowerLocations - 1)


Connection.Open ()


Comando Dim As New SqlCommand ("SELECT ISNULL (SUM (packed_Qty),
0) AS DE packedTotal [tblPacked] WHERE ([packed_GrowerLocationId] = @
ubicacin)", la conexin)
Dim param0 como nuevo SqlParameter ("location",
System.Data.OleDb.OleDbType.Integer)


command.Parameters.Add (param0)
param0.Value = Iloc (i)


iTotalPackedOnLocs + = Convert.ToInt32 (command.ExecuteScalar
())


command.Parameters.Clear ()
Connection.close ()




Prximo


ITotalPackedOnLocs Volver


End Function



Cmo utilizar Conde, Calcular sum (), Caluculate
Max () en VB.NET?
Archivados Foros V
>
IDE de Visual Basic
Pregunta


0
Inicia una sesin para votar
Hola

Gracias por adelantado.

En VFP9 podemos utilizar los siguientes y cmo hacerlo con vb.net?

CONTAR PARA (wk_code = 'Iny') A abcd5
CALCULAR SUMA (total_hr) PARA (emp_id = epidi1) A TOT1
CALCULAR MAX (en_date) DE ((emp_id = epidi1) A etydt

--------------------------------------------
En Vb.Net

Dim dbnd1 As New BindingSource
dbnd1.DataSource = DTB4 'Datatable para SEC-ID de
?????????

U.PARANTHAMAN
Martes, 31 de marzo 2009 07:38 AM

Paramu
2,070 Points
Respuestas


2
Inicia una sesin para votar
En voluminoso, se puede lograr un clculo equivalente a travs del
mtodoDataTable.Compute.

Imports System.Data.OleDb

Public Class Form1

Private Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
'En primer lugar llenar los datos de la tabla de base de datos en un objeto DataTable
Con dvil como OleDbConnection = new OleDbConnection ("Provider =
Microsoft.Jet.OLEDB.4.0; data source = D: \ MyDB.mdb")
Dim cmd Como OleDbCommand = Nuevo OleDbCommand ("SELECT nombre de usuario de
usertable", con)
con.Open ()
Dim myda Como OleDbDataAdapter = Nuevo OleDbDataAdapter (cmd)
Dim MyDataTable Como DataTable = Nuevo DataTable ()
myDA.Fill (MyDataTable)
con.Close ()
Con = Nada
'Entonces usted puede utilizar myDataTable.Compute () para hacer algo
End Sub

End Class

Un DataTable tiene un mtodo Compute () para obtener un valor agregado para una
columna se expresa en el siguiente formato.
DataTable.Compute ("AggregateFunction (DataColumn)", "estado | Nada
| null")
El mtodo Compute () se pasa dos argumentos en una lista separada por comas
de valores de cadena. El primer argumento es el nombre de un AggregateFunction
(), que tiene el nombre de una DataColumn incluidos dentro paretheses; esta es la
columna de DataSet en el que la funcin de agregado se aplica. El segundo
argumento restringe los DataRows los que se accede. Si se utilizan todas las filas de la
columna en la funcin, no hay restricciones, por lo que se pasa un valor nulo (o
la palabra clave Nothing). De lo contrario, una condicin se suministra para
identificar que se seleccionan filas.
Funciones de agregado disponibles incluyen los que se muestran en la siguiente
tabla.
Promedio () El promedio de los valores de una columna
Count () El nmero de filas (valores) en una columna
Max () El mayor valor de una columna
Min () El menor valor en una columna
DesvEst () La desviacin estndar de los valores en una columna
Sum () La suma de los valores de una columna
Var () La varianza estadstica de los valores de una columna

DataTable.Compute mtodo http://msdn.microsoft.com/en-
us/library/system.data.datatable.compute.aspx

Por favor, recuerde que debe marcar las respuestas como respuestas si ayudan y desmarcar ellos si no
son de ayuda.
Bienvenido al All-In-One Framework Code! Si usted tiene algn comentario, por favor dganos.
o Marcado como respuesta Paramu Mircoles, 01 de abril 2009 24:01
Mircoles, 01 de abril 2009 11:08 AM

Martin Xie - MSFT
24,160 Points
Todas las respuestas


2
Inicia una sesin para votar
Hola Paramu,

En VB.NET, puede ejecutar instruccin T-SQL de la siguiente muestra de cdigo
para lograr las caractersticas equivalentes.

Requisitos: Drag & drop Button1, Button2 y Button3 hasta Form1.

Imports System.Data.OleDb

Public Class Form1

Private Sub (remitente de ByVal como System.Object, ByVal e As System.EventArgs) Handles
Button1_Click Button1.Click
Con dvil como OleDbConnection = new OleDbConnection ("Provider =
Microsoft.Jet.OLEDB.4.0; data source = D: \ MyDB.mdb")
Dim cmd Como OleDbCommand = Nuevo OleDbCommand ("SELECT COUNT (wk_code)
DESDE usertable Dnde wk_code = 'Iny'", con)
con.Open ()
Dim abcd5 Como Int32 = cmd.ExecuteScalar
MessageBox.Show (abcd5)
con.Close ()
Con = Nada
End Sub

Private Sub (remitente de ByVal como System.Object, ByVal e As System.EventArgs) Handles
Button2_Click Button2.Click
Con dvil como OleDbConnection = new OleDbConnection ("Provider =
Microsoft.Jet.OLEDB.4.0; data source = E: \ MyDB.mdb")
Dim cmd Como OleDbCommand = Nuevo OleDbCommand ("SELECT SUM (total_hr) DESDE
usertable Dnde emp_id = epidi1", con)
con.Open ()
Dim TOT1 Como Int32 = cmd.ExecuteScalar
MessageBox.Show (TOT1)
con.Close ()
Con = Nada
End Sub

Private Sub (remitente de ByVal como System.Object, ByVal e As System.EventArgs) Handles
Button3_Click Button3.Click
Con dvil como OleDbConnection = new OleDbConnection ("Provider =
Microsoft.Jet.OLEDB.4.0; data source = E: \ MyDB.mdb")
Dim cmd Como OleDbCommand = Nuevo OleDbCommand ("SELECT MAX (en_date)
DESDE usertable Dnde emp_id = epidi1", con)
con.Open ()
Dim etydt Como Int32 = cmd.ExecuteScalar
MessageBox.Show (etydt)
con.Close ()
Con = Nada
End Sub

End Class

COMPUTE (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms181708 (SQL.90). aspx
{AVG | CUENTA | MAX | MIN | DesvEst | DESVESTP | VAR | VARP | SUM}


Saludos cordiales,
Martin Xie
Mircoles, 01 de abril 2009 10:54 AM

Martin Xie - MSFT
24,160 Points


2
Inicia una sesin para votar
En voluminoso, se puede lograr un clculo equivalente a travs del
mtodoDataTable.Compute.

Imports System.Data.OleDb

Public Class Form1

Private Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
'En primer lugar llenar los datos de la tabla de base de datos en un objeto DataTable
Con dvil como OleDbConnection = new OleDbConnection ("Provider =
Microsoft.Jet.OLEDB.4.0; data source = D: \ MyDB.mdb")
Dim cmd Como OleDbCommand = Nuevo OleDbCommand ("SELECT nombre de usuario de
usertable", con)
con.Open ()
Dim myda Como OleDbDataAdapter = Nuevo OleDbDataAdapter (cmd)
Dim MyDataTable Como DataTable = Nuevo DataTable ()
myDA.Fill (MyDataTable)
con.Close ()
Con = Nada
'Entonces usted puede utilizar myDataTable.Compute () para hacer algo
End Sub

End Class

Un DataTable tiene un mtodo Compute () para obtener un valor agregado para una
columna se expresa en el siguiente formato.
DataTable.Compute ("AggregateFunction (DataColumn)", "estado | Nada
| null")
El mtodo Compute () se pasa dos argumentos en una lista separada por comas
de valores de cadena. El primer argumento es el nombre de un AggregateFunction
(), que tiene el nombre de una DataColumn incluidos dentro paretheses; esta es la
columna de DataSet en el que la funcin de agregado se aplica. El segundo
argumento restringe los DataRows los que se accede. Si se utilizan todas las filas de la
columna en la funcin, no hay restricciones, por lo que se pasa un valor nulo (o
la palabra clave Nothing). De lo contrario, una condicin se suministra para
identificar que se seleccionan filas.
Funciones de agregado disponibles incluyen los que se muestran en la siguiente
tabla.
Promedio () El promedio de los valores de una columna
Count () El nmero de filas (valores) en una columna
Max () El mayor valor de una columna
Min () El menor valor en una columna
DesvEst () La desviacin estndar de los valores en una columna
Sum () La suma de los valores de una columna
Var () La varianza estadstica de los valores de una columna

DataTable.Compute mtodo http://msdn.microsoft.com/en-
us/library/system.data.datatable.compute.aspx

Por favor, recuerde que debe marcar las respuestas como respuestas si ayudan y desmarcar ellos si no
son de ayuda.
Bienvenido al All-In-One Framework Code! Si usted tiene algn comentario, por favor dganos.
o Marcado como respuesta Paramu Mircoles, 01 de abril 2009 24:01
Mircoles, 01 de abril 2009 11:08 AM

Martin Xie - MSFT
24,160 Points


0
Inicia una sesin para votar
MARTIN .... usted est dando excelentes servicios.!!!!!
GRACIAS A LOS BONDAD ... !




Cmo utilizar SUM () en vb.net

he hacer 1 programa para registrar las horas de trabajo de los
empleados, por lo que al final, tengo que utilizar mi programa para
resumir todo el trabajo empleado en trabajo especfico no .....

i tratar algo de cdigo en vb.net pero rpido fuera el error (una
excepcin no controlada del tipo
'System.Data.OleDb.OleDbException' en system.data.dll)


strSQL = "SELECT sum (HoursInMin) DESDE DONDE ProjectTable
DepartmentName = 'Diseo' Y ProjectNo =" & FindTextBox.Text &
""

oledbcon.Open ()
Dim cmd As New OleDbCommand (strSQL, OLEDBCON)
cmd.ExecuteScalar () ---------- error en esta lnea
oledbcon.Close ()

alguien me puede ayudar onl esto ..... thanx mucho
07-07-2005 a las 02:29 AM

|
Goran
Nivel: Moderador

De registro: 16-05-2002
Mensajes: 1652
Re: Cmo utilizar SUM () en vb.net

De qu tipo es el campo ProjectNo? Es numrica? Intenta
convertir explcitamente el valor de texto de tipo numrico que
es el mismo que ProjectNo.

Tambin, declarar una variable que contendr el valor que se
devuelve desde la funcin ExecuteScalar.

____________________________
Si encuentras til la respuesta, por favor marque el tema como
resuelto.
10-07-2005 a las 17:29

|
Michaelee
Nivel: Protg

De registro: 07-07-2005
Mensajes: 4
Re: Cmo utilizar SUM () en vb.net

mi ProjectNO en el acceso ms me puse al texto ..... i soluciona el
error fuera pronta ya, pero en el TextBox1.Text no i no puede
obtener la suma (TotalInMin) del comando, si mi codificacin es
correcta?
11-07-2005 a las 12:45

|
Goran
Nivel: Moderador

De registro: 16-05-2002
Mensajes: 1652
Re: Cmo utilizar SUM () en vb.net

Si se trata de un campo de tipo texto, entonces usted necesita
para poner en valor entre comillas simples, como usted
probablemente ha hecho, ya que dices que haya resuelto el
error.

En cuanto a la indicacin del valor de retorno, es necesario
declarar una variable que recibir el valor de retorno, como ya he
dicho. Algo como
Dim x como doble

x = cmd.executescalar ()
TextBox1.Text = x.tostring


____________________________
Si encuentras til la respuesta, por favor marque el tema como
resuelto.
11-07-2005 a las 15:05

|
fabuloso
Nivel: VB Guru


De registro: 08/03/2002
Mensajes: 435
Re: Cmo utilizar SUM () en vb.net

Otra manera que si usted va a estar recibiendo ms de un valor
agregado a partir de la consulta (quizs los totales de 3 campos,
y el promedio de otro), puede utilizar la propia consulta SQL para
crear una columna que luego se puede leer de igual por lo que:
'Poner una consulta como en el comando ...
Dim sql As String = "select sum (HoursInMin) AS
TotalTime, AS ... "" El resto de los artculos vienen aqu
'... Adelante en el cdigo ...
Dim dr Como OleDbDataReader = cmd.ExecuteReader ()
'estrecha conexin aqu
'Consiga sus horas totales desde el lector de datos
dr.Read ()
Tiempo Dim As Double = dr ("TotalTime")
'El resto de su cdigo ...


As como una nota, me encuentro en un caf internet y estoy de
codificacin de aire, (codificacin de la parte superior de la
cabeza), por lo que tendr que comprobar un par de cosas si se
utiliza este cdigo (por ejemplo, el comportamiento
CloseConnection del mtodo ExecuteReader (), no puedo
recordar el nombre de la enumeracin por lo que tendr que
comprobar esa parte.)

Feliz codificacin.

____________________________
Mi jefe es un carpintero judo (Jesucristo)


Bench Cerebro Certificado VB.NET para desarrolladores
11-07-2005 a las 16:58

|
Michaelee
Nivel: Protg

De registro: 07-07-2005
Mensajes: 4
Re: Cmo utilizar SUM () en vb.net

En realidad, yo slo tengo que resumir 1 campo, im utilizando el
mtodo que Goran muestran aqu, pero tengo pronta otro error
out:
"Excepcin no controlada del tipo
'System.Data.OleDb.OleDbException' en system.data.dll"

aqu est el cdigo:

Private Sub DesignTotalHours_Click (ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
DesignTotalHours.Click


strSQL = "SELECT sum (HoursInMin) desde ProjectTable donde
DepartmentName = 'Diseo' y ProjectNo =" & TotalHr.Text & ""

Si oledbcon.State = ConnectionState.Closed Entonces
oledbcon.ConnectionString = con
oledbcon.Open ()
End If

Dim cmd As New OleDbCommand (strSQL, OLEDBCON)

da = Nuevo OleDbDataAdapter (cmd)
da.InsertCommand = cmd

Dim selectedProjNo As String = TotalHr.Text

Si No selectedProjNo es nada y selectedProjNo <> "" Entonces
da.InsertCommand.Parameters.Add ("& TotalHr.text &",
OleDbType.VarChar, 50, "ProjectNo")
da.InsertCommand.Parameters (0). Valor = selectedProjNo
Ms

MsgBox ("Por favor, introduzca Proyecto n", MsgBoxStyle.Critical,
"Hojas de Global Mould Time")
Exit Sub
End If

Dim JobHoursInMin As Integer

JobHoursInMin = da.InsertCommand.ExecuteScalar

Dim hr As Integer = Math.Floor (JobHoursInMin / 60)
Dim min As Integer = JobHoursInMin Mod 60
MinInTwoDigits Dim como secuencia

Si min.ToString.Length = 1 Entonces
MinInTwoDigits = "0" + min.ToString
Ms
MinInTwoDigits = min.ToString

End If

TextBox1.Clear ()

Dim strTotalHr As String = hr.ToString + ":" + MinInTwoDigits

TextBox1.Text = strTotalHr

DesignTotalHours.Enabled = False

Si oledbcon.State = ConnectionState.Open Entonces
oledbcon.Close ()
da.Dispose ()
oledbcon.Dispose ()
End If
End Sub



Izzit nada malo en mi cdigo, por favor, dame algunos consejos
.... thanx mucho .....

12-07-2005 en 12:31a.m.

|
fabuloso
Nivel: VB Guru


De registro: 08/03/2002
Mensajes: 435
Re: Cmo utilizar SUM () en vb.net

Creo que esto es debido a la cuestin de que Goran menciona en
su puesto, si su ProjectNo es un campo de texto, tendr que
incluir el valor entre comillas simples, como as ...
strSQL = "SELECT sum (HoursInMin) desde ProjectTable donde
DepartmentName = 'Diseo' y ProjectNo =" "y TotalHr.Text
&" '"


Preste atencin a las comillas simples audaces antes y despus
de la lnea TotalHr.Text.

Y slo para que yo pueda aclarar una cosa, la consulta va a
evaluar ProjectNo pero el cdigo est dando horas totales. No
es posible que se supone que para dar otro valor y el error podra
estar llegando desde all.

____________________________
Mi jefe es un carpintero judo (Jesucristo)


Bench Cerebro Certificado VB.NET para desarrolladores
12-07-2005 a las 14:41

|
Michaelee
Nivel: Protg

De registro: 07-07-2005
Mensajes: 4
Re: Cmo utilizar SUM () en vb.net

thanx fabuloso y Goran mucho, yo puedo obtener el valor total
ya ......

el problema ya resolver de acuerdo con su comentario, becoz de
la cotizacin ('') ............

muchas gracias en gran medida a la fabulosa y Goran


Sumar Valores de Base de Datos en Visual Basic
.NET
Desarrollo
>
Lenguaje VB.NET
Pregunta


0

Inicie sesin para votar
Buenas noches, molestando nuevamente (*.*), bueno escribo para preguntar como se hace para que en el
DataGridView se muestren las sumas de varios valores de elementos con las mismas caracteristicas, es
decir, tengo esta tabla
| ID | NombreEmpleado | DiaTrabajo | Ganancia |
| 01 | Juan Prez | 01/01/2013 | $100 |
| 01 | Juan Prez | 02/01/2013 | $120 |
| 02 | Jos Morelos | 01/01/2013 | $150 |
| 02 | Jos Morelos | 02/01/2013 | $300 |
| 03 | Vicente Prez | 01/01/2013 | $50 |
| 03 | Vicente Prez | 02/01/2013 | $50 |
Y quiero que se muestre de la siguiente manera
| ID | NombreEmpleado | Ganancia |
| 01 | Juan Prez | $220 |
| 02 | Jos Morelos | $450 |
| 03 | Vicente Prez | $100 |
Como pueden ver reune la ganancia de los dos das de cada empleado y lo suma... cmo puedo hacer
esto para mostrarlo en un DataGridView? De antemano, por sus respuestas gracias. <3
martes, 12 de marzo de 2013 1:48
Responder
|
Citar
|

Rin Sakuragi
30 Puntos
Respuestas


0

Inicie sesin para votar
si entendi bien, entonces solo deberias hacer esto
select NombreEmpleado as Empleado, SUM(Ganancia) As Ganancia FROM tuTabla
group by NombreEmpleado
y para mostrarlo tomare el ejemplo de pedro:... y creo que deberia ser todo saludos

Tambin puedes hacer la consulta de esta manera que te da el mismo resultado
Public Shared Function CargarGrilla() As DataTable
Using cn As SqlConnection = Conexion.Conectar("default")
Using cmd As SqlCommand = cn.CreateCommand
cmd.CommandText = "SELECT NombreEmpleado, SUM(Ganancia) As Ganancia FROM
tuTabla GROUP BY NombreEmpleado"
Using da As New SqlDataAdapter(cmd)
Dim dt As New DataTable
da.Fill(dt)
Return dt
End Using
End Using
End Using
End Function



Pedro vila
"El hombre sabio querr estar siempre con quien sea mejor que l."
Lima - Per


si mi respuesta te ayudo votala como util, si resolvio tu duda marcala como respuesta, de esta manera
ayudas a otros compaeros que tengan dudas similares.

o Editado EddieMontana24 jueves, 21 de marzo de 2013 23:22
o Marcado como respuesta Rin Sakuragi sbado, 23 de marzo de 2013 0:35
jueves, 21 de marzo de 2013 23:21
Responder
|
Citar
|

EddieMontana24
1.950 Puntos
Todas las respuestas


0

Inicie sesin para votar
Hola Rin:
Podrias sumar los valores desde la misma consulta y dejar que sea la Bd quien resuelva las
operaciones.
SUM (Transact-SQL)
Dentro del Link encontraras un ejemplu muy claro sobre lo que deseas hacer.

Saludos desde Monterrey, Nuevo Len, Mxico!!!
martes, 12 de marzo de 2013 4:10
Responder
|
Citar
|

Luis_Escobar
Softtek
11.180 Puntos


0

Inicie sesin para votar
podrias hacer
SELECT ID, NombreEmpleado, SUM(Ganancia) As Ganancia FROM NombreTabla
GROUP BY ID, NombreEmpleado
para mostrarlo solo seria
Dim dt As New DataTable()
Using conn As New SqlConnection("connection string")

Dim query As String = "SELECT ID, NombreEmpleado, SUM(Ganancia) As
Ganancia FROM NombreTabla GROUP BY ID, NombreEmpleado"

Dim cmd As New SqlCommand(query, conn)
Dim da As New SqlDataAdapter(cmd)
da.Fill(dt)
End Using
DataGridView1.DataSource = dt



saludos

Leandro Tuttini

Blog
Buenos Aires
Argentina

o Editado Leandro TuttiniMVP martes, 12 de marzo de 2013 7:50
martes, 12 de marzo de 2013 7:48
Responder
|
Citar
|

Leandro Tuttini
Baufest
(Partner, MVP)
610.170 Puntos


0

Inicie sesin para votar
Hola Leandro Tuttini,
He hecho conformes me has indicado y no me funciona, pues al momento de cargar el DataGridView
me marca error, indicandome que ID no es parte de la funcin, y si quito ID me dice
que NombreEmpleado no es parte de la funcin, no se que hacer. Por su atencin gracias.



domingo, 17 de marzo de 2013 1:20
Responder
|
Citar
|

Rin Sakuragi
30 Puntos


0

Inicie sesin para votar
Hola Rin
Lo he probado y si funciona :
Public Shared Function CargarGrilla() As DataTable
Using cn As SqlConnection = Conexion.Conectar("default")
Using da As New SqlDataAdapter("SELECT ID, Nombre, SUM(Ganancia) As Ganancia
FROM Rin GROUP BY ID, Nombre", cn)
Dim dt As New DataTable
da.Fill(dt)
Return dt ==> Te falto esto
End Using
End Using
End Function
Imagen


Pedro vila
"El hombre sabio querr estar siempre con quien sea mejor que l."
Lima - Per
martes, 19 de marzo de 2013 14:25
Responder
|
Citar
|

Pedro vila (MAP)
GlobalTech
1.750 Puntos


0

Inicie sesin para votar
Tambin puedes hacer la consulta de esta manera que te da el mismo resultado
Public Shared Function CargarGrilla() As DataTable
Using cn As SqlConnection = Conexion.Conectar("default")
Using cmd As SqlCommand = cn.CreateCommand
cmd.CommandText = "SELECT ID, Nombre, SUM(Ganancia) As Ganancia FROM Rin
GROUP BY ID, Nombre"
Using da As New SqlDataAdapter(cmd)
Dim dt As New DataTable
da.Fill(dt)
Return dt
End Using
End Using
End Using
End Function



Pedro vila
"El hombre sabio querr estar siempre con quien sea mejor que l."
Lima - Per
o Propuesto como respuesta Pedro vila (MAP) sbado, 23 de marzo de 2013 0:37
martes, 19 de marzo de 2013 14:31
Responder
|
Citar
|

Pedro vila (MAP)
GlobalTech
1.750 Puntos


0

Inicie sesin para votar
Gracias a Leandro Tuttini y a Pedro vila por responder, bueno creo que debo de pedirles una
disculpa, creo que no me explique bien, lo que pasa es que ya me fije que en la base de datos los datos
los tengo as
| ID | NombreEmpleado | DiaTrabajo | Ganancia |
| 01 | Juan Prez | 01/01/2013 | $100 |
| 02 | Jos Morelos | 01/01/2013 | $150 |
| 03 | Juan Prez | 02/01/2013 | $120 |
| 04 | Vicente Prez | 01/01/2013 | $50 |
| 05 | Jos Morelos | 02/01/2013 | $300 |
| 06 | Vicente Prez | 02/01/2013 | $50 |
Y quiero que se muestre de la siguiente manera
| NombreEmpleado | Ganancia |
| Juan Prez | $220 |
| Jos Morelos | $450 |
| Vicente Prez | $100 |
En donde el ID, corresponde a la entrada de los datos, es decir, el primer dato que se guardo es el 01, el
segundo el 03, y as sucesivamente, no es el ID del Empleado, por lo cul yo estaba equivocada, es el
nmero de ingreso de dato a la tabla.
Supongo que por ello a m me marca el error y no me muestra lo que le pido. Ya he hecho como Pedro
vila indica, pero siento que esa falta de explicar ese detalle que hasta ayer me puse analizar aqu en el
Foro me di cuenta. Por ello le pido una disculpa si he descrito mal mi problema. Solo espero me
puedan ayudar.
jueves, 21 de marzo de 2013 22:59
Responder
|
Citar
|

Rin Sakuragi
30 Puntos


0

Inicie sesin para votar
si entendi bien, entonces solo deberias hacer esto
select NombreEmpleado as Empleado, SUM(Ganancia) As Ganancia FROM tuTabla
group by NombreEmpleado
y para mostrarlo tomare el ejemplo de pedro:... y creo que deberia ser todo saludos

Tambin puedes hacer la consulta de esta manera que te da el mismo resultado
Public Shared Function CargarGrilla() As DataTable
Using cn As SqlConnection = Conexion.Conectar("default")
Using cmd As SqlCommand = cn.CreateCommand
cmd.CommandText = "SELECT NombreEmpleado, SUM(Ganancia) As Ganancia FROM
tuTabla GROUP BY NombreEmpleado"
Using da As New SqlDataAdapter(cmd)
Dim dt As New DataTable
da.Fill(dt)
Return dt
End Using
End Using
End Using
End Function



Pedro vila
"El hombre sabio querr estar siempre con quien sea mejor que l."
Lima - Per
Descripcin de la tcnica
ActiveX Data Objects (ADO) puede recuperar cinco tipos de datos diferentes del servidor:
Conjunto de registros
Nmero de registros modificados por una consulta de accin (como INSERT, UPDATE,
DELETE o SELECT INTO)
Mensaje informativo o advertencia
Mensaje de error
Valores de retorno y parmetros de salida del procedimiento almacenado
Cuando lea el resultado de una instruccin SQL por lotes, puede utilizar el
mtodo NextResult para poner el DataReader en el siguiente resultado del conjunto de
resultados.


Requisitos
En la lista siguiente se describe el hardware, el software, la infraestructura de red y los Service
Packs recomendados que necesitar:
Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced
Server o Windows NT 4.0 Server
Microsoft Visual Studio .NET
Microsoft SQL Server 7.0 o posterior
En el presente artculo se da por supuesto que est familiarizado con los temas siguientes:
Visual Studio .NET
Fundamentos y sintaxis de ADO.NET
Crear el proyecto y agregar cdigo
Este ejemplo de cdigo utiliza la tabla Authors de la base de datos de ejemplo Pubs.
1. Pegue las instrucciones siguientes en la herramienta Analizador de consultas de SQL o en
la utilidad ISQL:
2. CREATE PROC MyProc
3. AS
4. SELECT * FROM Authors
5. SELECT * FROM Authors WHERE State = 'CA'
6. GO

7. Abra Visual Studio .NET.
8. Cree un nuevo proyecto de aplicacin para Windows de Visual Basic.
9. Asegrese de que el proyecto contiene una referencia al espacio de
nombres System.Data y, si no es as, agregue una.
10. Ponga un botn Command en Form1. Cambie la propiedad Name del botn a btnTest y
cambie la propiedad Text aProbar.
11. Utilice la instruccin Imports de los espacios de
nombres System, System.Data.OleDb y System.Data.SqlClient de forma que no tenga
que suministrar declaraciones de estos espacios de nombres ms adelante en el cdigo.
Agregue el cdigo siguiente en la seccin General Declarations de Form1:
12. Imports System
13. Imports System.Data.OleDb
14. Imports System.Data.SqlClient

15. Agregue el cdigo siguiente despus de la regin "Cdigo generado por el Diseador de
Windows Forms" en la ventana de cdigo:

Nota
Debe cambiar el Id. de usuario junto a User ID y la contrasea junto a Password por los
valores correctos antes de ejecutar este cdigo. Asegrese de que el Id. de usuario tiene
los permisos apropiados para realizar esta operacin en la base de datos.
16. Private Sub btnTest_Click(ByVal sender As System.Object, _
17. ByVal e As System.EventArgs) Handles btnTest.Click
18. Dim myConnString As String = _
19. "User ID=<username>;Password=<strong password>;Initial
Catalog=pubs;Data Source=myServer"
20. Dim myConnection As New SqlConnection(myConnString)
21. Dim myCommand As New SqlCommand()
22. Dim myReader As SqlDataReader
23.
24. myCommand.CommandType = CommandType.StoredProcedure
25. myCommand.Connection = myConnection
26. myCommand.CommandText = "MyProc"
27. Dim RecordCount As Integer
28.
29. Try
30. myConnection.Open()
31. myReader = myCommand.ExecuteReader
32. While myReader.Read()
33. 'Write logic to process data for the first result.
34. RecordCount = RecordCount + 1
35. End While
36. MessageBox.Show("Total number of Authors: " &
RecordCount.ToString)
37.
38. myReader.NextResult()
39. RecordCount = 0
40.
41. While myReader.Read()
42. 'Write logic to process data for the second result.
43. RecordCount = RecordCount + 1
44. End While
45. MessageBox.Show("Authors from California: " &
RecordCount.ToString)
46. Catch ex As Exception
47. MessageBox.Show(ex.ToString())
48. Finally
49. myConnection.Close()
50. End Try
51. End Sub

52. Modifique la cadena de conexin (myConnString) de acuerdo con su entorno.
53. Guarde el proyecto. En el men Depurar, haga clic en Iniciar y ejecute el proyecto.
54. Haga clic en Probar. Observe que los cuadros de mensajes muestran los datos devueltos
por el procedimiento almacenado.
Referencias
Para obtener informacin adicional acerca de cmo llamar a procedimientos almacenados, haga
clic en el nmero de artculo siguiente para verlo en Microsoft Knowledge Base:
306574 Cmo utilizar Visual Basic .NET para llamar a los procedimientos almacenados de SQL
Server desde ASP.NET
Para obtener informacin adicional acerca del control de errores, haga clic en el nmero de
artculo siguiente para verlo en Microsoft Knowledge Base:
308043 Cmo obtener errores del proveedor subyacente utilizando ADO.NET en Visual Basic
.NET
Para obtener informacin adicional acerca de os parmetros y los procedimientos almacenados,
haga clic en el nmero de artculo siguiente para verlo en Microsoft Knowledge Base:
308051 PRB: o se devuelven parmetros de salida cuando ejecuta un comando de ADO.NET en
Visual Basic .NET
Para obtener ms informacin acerca de los objetos de ADO.NET y su sintaxis, consulte lo
siguiente en la documentacin del Kit de desarrollo de software (SDK) de Microsoft .NET
Framework:
Accessing Data with ADO.NET

Potrebbero piacerti anche