Reperire nometabella da datatable

mercoledì 04 ottobre 2006 - 19.30

Amodio Profilo | Expert

come da titolo come si puo' fare?

ho provato con Dataset.TableName , ma restituisce una stringa vuolta

e questo sia quando dichiaro il datatable con
Dim dt_tipologie As New DataTable("NomeTabella")
sia con:
Dim dt_tipologie As New DataTable

ovviamente quando lo vado a riempire faccio una select su una singola tabella e riempio il datatable, ma successivamente ho un procedura che scorre il datatable, ma ha bisogno di sapere che tabella si tratta

grazie

Cteniza Profilo | Guru

Prova con:
Dim k As Integer
For k = 0 To myDataSet.Tables.Count - 1
Console.WriteLine(myDataSet.Tables(k).TableName
Next

freeteo Profilo | Guru

ciao,
se intendi che nel datatable vuoi sapere il nome della tabella del database che hai caricato (per intenderci il nome dopo il "from" della stringa sql) non ti resta che caricartelo in un campo direttamente nella query, in modo da poterlo avere comodo per ogni record.
In poche parole qualcosa come:

select 'clienti' as tabella, * from clienti

come vedi aggiungo un campo fisso con il nome della tabella (che ovviamente so uando faccio la query sul db)
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

blood Profilo | Senior Member

>come da titolo come si puo' fare?
>
>ho provato con Dataset.TableName , ma restituisce una stringa
>vuolta

dataset.Tables(numerotabella).ToString()

>
>e questo sia quando dichiaro il datatable con
>
> Dim dt_tipologie As New DataTable("NomeTabella")
>
>sia con:
>
> Dim dt_tipologie As New DataTable
>
>
>ovviamente quando lo vado a riempire faccio una select su una
>singola tabella e riempio il datatable, ma successivamente ho
>un procedura che scorre il datatable, ma ha bisogno di sapere
>che tabella si tratta
>
>grazie

o se devi fare una procedura fai come indicato da cteniza

---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

Amodio Profilo | Expert

scusate ho sbalgiato a scrivere
infatti il titolo è giusto e anche il codice di esempio

ma non è un dataset...bensi' un datatable

grazie

dominatore Profilo | Newbie

prova con dt_tipologie.toString() dovrebbe funzionare

Amodio Profilo | Expert

eh no dt.tostring mi restituisce anhe esso stringa vuota! :(

dominatore Profilo | Newbie

hai importato l'assembly Imports System.Data??

Amodio Profilo | Expert

si ho importato system.data

dominatore Profilo | Newbie

potresti postare le righe di codice che ti danno questo problema??è veramente difficile pensare a cosa può essere il problema senza avere davati nulla

Amodio Profilo | Expert


allora, ho cercato di abbreviare il piu' possibile cmq...
ti ho inserito la funzione e il metodo che mi riempie il datatable,qui sotto è il codice del form che richiama il sincronizzadb,che gli passoil datatable pieno




Dim dt_tipologie As New DataTable("ciao")
Dim ObjTipologieRighe As New CLS_TipologieRighe
dt_tipologie = ObjTipologieRighe.Get_DTtipologie() 'riempio il datatable con tutte le tipologie esistenti
ObjTipologieRighe = Nothing

Call SincronizzaDb(dt_tipologie)






'in questa funzione devo reperire il nome della tabella****************
Public Function SincronizzaDb(ByVal DT1 As DataTable) As String
Dim NomeTabella As String = DT1.ToString
end function

'funzione che è nella classe, e mi restituisce il datatable
Public Function Get_DTtipologie() As DataTable
Dim DA As OleDb.OleDbDataAdapter
Dim DT As New DataTable
strsql = "SELECT DescTipologia, CodTipologia FROM Tipologie ORDER BY descTipologia "

DA = New OleDb.OleDbDataAdapter(strsql, myconnection)
DA.Fill(DT)

Return DT
End Function


dominatore Profilo | Newbie

Prova così il resto dovrebbe andare bene

Public Function SincronizzaDb(ByVal DT1 As DataTable) As String
Return DT1.ToString
end function

speriamo sia la volta buona

Amodio Profilo | Expert

ma sei sicuro?
pare che non cambia niente in confronto al mio codice

Cteniza Profilo | Guru



>Dim DA As OleDb.OleDbDataAdapter
>Dim DT As New DataTable
>strsql = "SELECT DescTipologia, CodTipologia FROM Tipologie ORDER BY descTipologia "
>DA = New OleDb.OleDbDataAdapter(strsql, myconnection)
>DA.Fill(DT)
Il dataadapter non imposta il nome della tabella, non gliene frega niente se estrai da tipologie o da qualsiasi altra tabella.
Visto che non hai impostato nessun nome la tabella prende di default il nome "vuoto".
Se riempi un dataset senza fornire il nome della tabella ci mette "table".

myDataTable.ToString e MydataTable.Tablename sono la stessa cosa il ToString è l'override sulla classe tabella che restituisce il nome (tablename).

giulyxiano Profilo | Junior Member

Leggo solo adesso post: ma non capisco bene cosa ti serve?
La tabella è di un dataset?
Puoi prendere la tabella così: dataset.Tables(0).TableName.ToString()
e ti da il nome della tabella con indice 0 cambiando l'indice ti da il nome dell'altra tabella. In pratica quando vengono aggiunte le tabelle vengono aggiunte in una collezione ed indicizzate per indice crescente vedi se risolvi altrimenti scendiamo nel particolare.
Greco Giuliano
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5