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