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 11-06-2008, 16:58:01
Jaf16
 
Mensajes: n/a
Predeterminado Error al recorrer datagrid e insertar.

Tengo el siguiente código:

Private Sub facturar()
Dim conexion As OleDbConnection = New
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=C:\FACTURACION\FACTURACION.MDB")
Dim daalbaran As OleDbDataAdapter = New OleDbDataAdapter("SELECT
IDPROVEEDOR,IDOBRA,IDCLIENTE,SUM(CANTIDADALBARAN) FROM ALBARAN GROUP BY
IDPROVEEDOR,IDOBRA,IDCLIENTE,CANTIDADALBARAN", conexion)
Dim dsalbaran As DataSet = New DataSet
daalbaran.Fill(dsalbaran)
Me.DataGridFACTURADO.DataSource = dsalbaran.Tables(0)
Me.DataGridView2.DataSource = dsalbaran.Tables(0)

Dim dt As DataTable = DirectCast(DataGridFACTURADO.DataSource,
DataTable)
For Each row As DataRow In dt.Rows
If row.RowState = DataRowState.Modified Then
MessageBox.Show(row.Item("IdProveedor").ToString)
If Not row.IsNull("IdProveedor") Then
MessageBox.Show(row.Item("Idproveedor").ToString)
End If

End If
MessageBox.Show(row.Item("Idproveedor").ToString)

Dim proveedor As String
Dim obra As String
Dim cliente As String
cliente = row.Item("IdCliente")
obra = row.Item("IdObra")
proveedor = row.Item("IdProveedor")
Dim cantidad As String
cantidad = row.Item("CANTIDADALBARAN")
Dim sql As String = "INSERT INTO FACTURACION
(IDPROVEEDOR,IDCLIENTE,IDOBRA,CANTIDAD) VALUES('" & proveedor & "," & cliente
& "," & obra & "," & cantidad & "')"
Dim cmd As New OleDbCommand(sql, conexion)
conexion.Open()

cmd.ExecuteNonQuery()
conexion.Close()
Next
End Sub

A la hora de ejectuar el código en la lÃ***nea:


cantidad = row.Item("CANTIDADALBARAN") me da el error:


La columna 'CANTIDADALBARAN' no pertenece a la tabla Table, este campo está
en la talba Albaran y quiero insertarlo en la tabla Facturación y en el
datagrid me lo muestra.

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 11-06-2008, 17:22:10
SoftJaén
 
Mensajes: n/a
Predeterminado Re: Error al recorrer datagrid e insertar.

Jaf16" escribió:

> Tengo el siguiente código:
>
> Dim daalbaran As OleDbDataAdapter = New OleDbDataAdapter( _
> "SELECT IDPROVEEDOR,IDOBRA,IDCLIENTE, _
> SUM(CANTIDADALBARAN) FROM ALBARAN ...
>
> Dim dsalbaran As DataSet = New DataSet
> daalbaran.Fill(dsalbaran)
>
> A la hora de ejectuar el código en la lÃ***nea:
>
> cantidad = row.Item("CANTIDADALBARAN") me da el error:
>
> La columna 'CANTIDADALBARAN' no pertenece a la tabla Table, este campo
> está
> en la talba Albaran y quiero insertarlo en la tabla Facturación y en el
> datagrid me lo muestra.


De acuerdo con la consulta SELECT, yo no veo por ninguna parte que exista
una columna llamada CANTIDADALBARAN, de ahÃ*** que obtengas dicha excepción al
intentar leer su valor.

Tú estás utilizando la columna CANTIDADALBARAN para sumar los valores
existentes en la misma, pero esa columna no existe con dicho nombre, por
tanto, le tendrás que indicar un nombre a dicha columna mediante una
cláusula AS:

SELECT IdProveedor, IdObra, IdCliente,
SUM(CantidadAlbaran) AS CantidadAlberan
FROM ...

--
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 12-06-2008, 12:51:01
Jaf16
 
Mensajes: n/a
Predeterminado Re: Error al recorrer datagrid e insertar.

Muchas gracias, lo del nombre columna está resulta, el problema surge cuando
la cantidad es decimal, me da el siguiente error:

El número de valores de consulta y el número de campos de destino son
diferentes

Si creo una variable integer, no lo da, pero claro, redondea la cifra, he
probado con Decimal y single y me da el mismo error.



"SoftJaén" wrote:

> Jaf16" escribió:
>
> > Tengo el siguiente código:
> >
> > Dim daalbaran As OleDbDataAdapter = New OleDbDataAdapter( _
> > "SELECT IDPROVEEDOR,IDOBRA,IDCLIENTE, _
> > SUM(CANTIDADALBARAN) FROM ALBARAN ...
> >
> > Dim dsalbaran As DataSet = New DataSet
> > daalbaran.Fill(dsalbaran)
> >
> > A la hora de ejectuar el código en la lÃ***nea:
> >
> > cantidad = row.Item("CANTIDADALBARAN") me da el error:
> >
> > La columna 'CANTIDADALBARAN' no pertenece a la tabla Table, este campo
> > está
> > en la talba Albaran y quiero insertarlo en la tabla Facturación y en el
> > datagrid me lo muestra.

>
> De acuerdo con la consulta SELECT, yo no veo por ninguna parte que exista
> una columna llamada CANTIDADALBARAN, de ahÃ*** que obtengas dicha excepción al
> intentar leer su valor.
>
> Tú estás utilizando la columna CANTIDADALBARAN para sumar los valores
> existentes en la misma, pero esa columna no existe con dicho nombre, por
> tanto, le tendrás que indicar un nombre a dicha columna mediante una
> cláusula AS:
>
> SELECT IdProveedor, IdObra, IdCliente,
> SUM(CantidadAlbaran) AS CantidadAlberan
> FROM ...
>
> --
> 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 12-06-2008, 13:01:43
SoftJaén
 
Mensajes: n/a
Predeterminado Re: Error al recorrer datagrid e insertar.

"Jaf16" escribió:

> lo del nombre columna está resulta, el problema surge cuando
> la cantidad es decimal, me da el siguiente error:
>
> El número de valores de consulta y el número de campos de destino son
> diferentes


Porque si estás especificando el número decimal con un coma (100,56), esa
coma se entiende que es otro separador de campos más, de ahÃ*** que el número
de valores de la consulta sea distinto al número de campos o columnas de
destino.

En una consulta SQL, los números decimales tienes que especificarlos con el
signo del punto decimal: 100.56, por ejemplo.


--
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 12-06-2008, 13:43:23
SoftJaén
 
Mensajes: n/a
Predeterminado Re: Error al recorrer datagrid e insertar.

Para no tener ese tipo de problema al ejecutar una consulta INSERT INTO
utilizando el signo de la coma en los números decimales, puedes encerrar el
número decimal entre comillas simples:

INSERT INTO Tabla1 (Campo1, Campo2)
VALUES(2145,'100,56')

Aunque lo mejor que puedes hacer es acostumbrarte a ejecutar consultas
parametrizadas:

' Establecemos una conexión con la base de datos de Access
'
Using cnn As New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Mis documentos\Bd1.mdb")

Try
' Creamos una consulta SQL de datos añadidos, para añadir
' un registro con un valor Integer y otro Single
'
Dim sql As String = _
"INSERT INTO Tabla1 " & _
"(CampoEntero, CampoSingle) VALUES (***Param1,***Param2)"

' Creamos un comando para ejecutar la consulta
'
Dim cmd As New OleDbCommand(sql, cnn)

' Creamos un parámetro
'
Dim param As New OleDbParameter("***Param1", OleDbType.Integer)

' Le asignamos el valor
'
param.Value = 1258

' Lo añadimos a la colección Parameters del objeto OleDbCommand.
'
cmd.Parameters.Add(param)

' Creamos el segundo parámetro
'
param = New OleDbParameter("***Param2", OleDbType.Single)
param.Value = 102.36
cmd.Parameters.Add(param)

' Abrimos la conexión
'
cnn.Open()

' Ejecutamos la consulta
'
Dim n As Int32 = cmd.ExecuteNonQuery

' Mostramos los registros afectados
'
MessageBox.Show(n.ToString)

Catch ex As Exception
MessageBox.Show(ex.Message)

Finally
' Cerramos la conexión
'
cnn.Close()

End Try

End Using

Si te acostumbras a ésto, te ahorrarás bastantes complicaciones.

--
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
Recorrer Recorrer Checkboxes de Listview rdgm Newsgroup microsoft.public.es.dotnet.vb 4 08-03-2008 18:06:51
Recorrer un Datagrid con VS.2003 y VB.NET aplicaciones moviles... David C Newsgroup microsoft.public.es.desarrollo.aplicaciones.moviles 6 16-04-2007 14:45:33
Recorrer un DataGrid con Compact Framework David C Newsgroup microsoft.public.es.desarrollo.aplicaciones.moviles 6 03-10-2006 07:28:01
Error al insertar un flash en ASP ~jose~ Newsgroup microsoft.public.es.frontpage 16 21-08-2006 19:57:29
Error al insertar hipervínculo Ana Newsgroup microsoft.public.es.office97 21 08-02-2004 15:32:21





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

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