Como agregar un campo calculado a una columna de un datatable

Iniciado por almita, 28 Mayo 2010, 23:49 PM

0 Miembros y 1 Visitante están viendo este tema.

almita

Este datatable ya tiene inf. Que estoy llenando con el método fill y al agregar la columna y llenado de la misma lo hago  con el siguiente código

dt.Columns.Add("Codigo", Type.GetType("System.String"))
Dim Row As DataRow
Row = dt.NewRow()
Row.Item("Codigo") = cod
dt.Rows.Add(Row)
dt.Rows.Item(i).ToString()


y el xls que genero queda de la siguiente manera

cuenta   subcuenta   partida   subpartida   concepto   abono   cargo   id_salida   Codigo
5000   5200   5200   5012   POLIZA DE IMSS CORRESPONDIENTE AL MES DE MARZO DEL 2010                                                                    0   24847.59   0   
5000   5300   5301   5012   POLIZA DE IMSS CORRESPONDIENTE AL MES DE MARZO DEL 2010                                                                    0   8101   0   
                        A0201
                        A0202
                        A0203
                        A0204
Alguien me puede orientar como le hago para que lo agrege como columna y no como row, gracias por su apoyo

almita

Chavos de casualidad alguien sabe como puedo agregar datos  a la columna Código sin que me lo ponga como nuevo registro como lo puse en el ejemplo anterior.

Agradeceré su apoyo

[D4N93R]

Si puedes postear un poco más de código.. Porque no veo bien claro todo., en teoría va bien.

almita

ok
tengo una enlace a un dbf y el resultado lo pongo en un datatable de la sig manera

sConn = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" & _
System.IO.Path.GetDirectoryName("C:\scrpt_dbf\nomina.dbf")
query = "select * from nomina"
Using dbConn As New System.Data.Odbc.OdbcConnection(sConn)
dbConn.Open()             
Dim da As New System.Data.Odbc.OdbcDataAdapter(query, dbConn)
Dim dt As New DataTable
da.Fill(dt)

enseguida le agrega una columna que estoy obteniendo de un xls. que estoy leyendo, de la sig manera

dt.Columns.Add("Codigo", Type.GetType("System.String"))
For i = 0 To datos1.Tables("sierra").Rows.Count - 1
    cta = datos1.Tables("sierra").Rows(i).Item(0).ToString
    cod = datos1.Tables("sierra").Rows(i).Item(2).ToString
    Dim Row As DataRow
    Row = dt.NewRow()
    Row.Item("Codigo") = cod
    dt.Rows.Add(Row)
Next


aqui el punto es que esta columna solo encontre que la puedo agregar pero como registro nuevo, yo lo que quiero es que los agrege como columna en los registros existentes. si me explique?

[D4N93R]

Lo que quieres es No agregar un registro nuevo, sino, agregar una columna?

Siguiendo tu código:

Código (vbnet) [Seleccionar]


dt.Columns.Add("Codigo", Type.GetType("System.String"))

For i = 0 To datos1.Tables("sierra").Rows.Count - 1
    cta = datos1.Tables("sierra").Rows(i).Item(0).ToString
    cod = datos1.Tables("sierra").Rows(i).Item(2).ToString
   
    dt.Rows[i]["Codigo"] = cod 'asignas cod  a la columna Codigo que creaste arriba.
   'En C# funciona, no se la sintaxis de VB.Net hehe

Next



El código no lo testié, dime si hay alguna excepción o algo..
Saludos

almita

es correcto tal como queria muchisisisisisimas gracias  D4N93R esa linera era la que no me quedaba. Por si a alguien le sirve quedo asi.

sConn = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" & _
System.IO.Path.GetDirectoryName("C:\scrpt_dbf\nomina.dbf")
query = "select * from nomina"
Using dbConn As New System.Data.Odbc.OdbcConnection(sConn)
dbConn.Open()             
Dim da As New System.Data.Odbc.OdbcDataAdapter(query, dbConn)
Dim dt As New DataTable
da.Fill(dt)
dt.Columns.Add("Codigo", Type.GetType("System.String")) 'crea la columna
For i = 0 To datos1.Tables("sierra").Rows.Count - 1
   cta = datos1.Tables("sierra").Rows(i).Item(0).ToString
   cod = datos1.Tables("sierra").Rows(i).Item(2).ToString
   dt.Rows(i)("Codigo") = cod
Next


asi es como leo un dbf y el resultado lo pongo en el datatable para agregarle la columna y luego le agrego los datos barriendo el datatble y el dataset trae el dodigo que leo del xls y lo agreco a la columna Codigo

[D4N93R]

Almita, trata de colocar los tags de código con el lenguaje:

[ code=csharp][/ code]
[ code=vbnet][/ code]
[ code=cpp][/ code]

Sin los espacios hehe

Saludos