nel datatable verificare quale colonna è contatore

mercoledì 29 novembre 2006 - 18.03

Amodio Profilo | Expert



come da titolo
come faccio a capire in un datatable quale colonna è la autonumber?

grazie

0v3rCl0ck Profilo | Guru

Ciao,

eccoti un modo per individuare la colonna AutoIncrement senza conoscere a priori quale sia:

Dim dt As New DataTable Dim dcAutoIncrement As DataColumn = Nothing For Each dc As DataColumn In dt.Columns If dc.AutoIncrement Then dcAutoIncrement = dc Exit For End If Next If dcAutoIncrement IsNot Nothing Then Console.WriteLine(String.Format("La colonna AutoIncrement è: {0}", dcAutoIncrement.ColumnName)) Else Console.WriteLine("Non è stata trovata nessuna colonna AutoIncrement") End If

Enjoy It

Amodio Profilo | Expert

ehm...non so ma provando con varie tabelle, sembra non funzionare
infatti mi risponde sempre che la tabella non ha colonna contatore :(
Dim conn As New OleDb.OleDbConnection conn.ConnectionString = strConn conn.Open() Dim DA As OleDb.OleDbDataAdapter strsql = "SELECT * FRom tipologie " DA = New OleDb.OleDbDataAdapter(strsql, conn) DA.Fill(DT) Dim dcAutoIncrement As DataColumn = Nothing For Each dc As DataColumn In dt.Columns If dc.AutoIncrement Then dcAutoIncrement = dc Exit For End If Next If dcAutoIncrement IsNot Nothing Then MsgBox(String.Format("La colonna AutoIncrement è: {0}", dcAutoIncrement.ColumnName)) Else MsgBox("Non è stata trovata nessuna colonna AutoIncrement") End If

ho fatto come mi hai detto!, ti allego il database di prova che ho ustao, come puoi vedere la prima colonna è contatore!
a te funziona?

0v3rCl0ck Profilo | Guru

ah quindi tu vuoi sapere se una colonna del database è contatore...

il database allegato nn lo vedo... cmq eccoti la soluzione al tuo problema:


Dim conn As New OleDb.OleDbConnection conn.ConnectionString = strConn conn.Open() Dim DA As OleDb.OleDbDataAdapter strsql = "SELECT * FRom tipologie " DA = New OleDb.OleDbDataAdapter(strsql, conn) DA.MissingSchemaAction = MissingSchemaAction.AddWithKey DA.Fill(DT) Dim dcAutoIncrement As DataColumn = Nothing For Each dc As DataColumn In dt.Columns If dc.AutoIncrement Then dcAutoIncrement = dc Exit For End If Next If dcAutoIncrement IsNot Nothing Then MsgBox(String.Format("La colonna AutoIncrement è: {0}", dcAutoIncrement.ColumnName)) Else MsgBox("Non è stata trovata nessuna colonna AutoIncrement") End If

l'unica riga di codice ke ho aggiunto è: DA.MissingSchemaAction = MissingSchemaAction.AddWithKey


Enjoy it
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