52 messaggi dal 15 aprile 2002
Salve a tutti.
Non so se sia possibile però ho questo tipo di problema dovendo tracciare le attività svolte dagli untenti su un sito abbiamo messo su una tabella di log che viene popolata con delle informazioni tipo:
utente,
Ip,
data accesso,
pagina visualizzata,
tipo di accesso effettuato sulla/e tabella/e,
nome tabella/e,
query effettuata.

Non so se è possibile e come si può sapere il nome delle tabelle che sono interessate dalla query che si sta eseguendo per popolare il dataset. Ad esempio con SelectCommand.CommmandText() si ottiene la stringa della querry eseguita.
E' possibile sapere quali sono le tabelle interessate.

Non so se sono stato chiaro.
Grazie

Cordialità Donaz
Animula, vagula, blandula, Hospes, comesque corporis, Quae nunc abibis in loca? Pallidula, rigida, nudula Nec, ut soles, dabis jocos. (Publius Aelius Hadrianus)
Devi "interrograre" i metadati dei data object contenuti nel db.

Es. sql server
http://msdn.microsoft.com/en-us/library/ms186778.aspx

Access
OleDbConnection1.GetSchema("MetaDataCollections");

Fabrizio Canevali
52 messaggi dal 15 aprile 2002
Grazie per l'indicazione provo a leggere l'articolo che mi hai indicato.
Infatti ho provato ad utizzare questo metodo però ricevo tutte le tabelle del db.

 
        Dim MyConnection2 As OleDbConnection
            MyConnection2 = New OleDbConnection("Provider=SQLOLEDB; Data Source=server00;Initial Catalog=CE;User ID=user;Password=psw")
            MyConnection2.Open()
            Dim myCommand2 As New OleDbDataAdapter("SELECT TbIdRicorso.IdRicorso, TbIdRicorso.IdProtDocway, TabAutGiudiziaria.DescAutGiud, TbIdRicorso.NominativoRicorrente, TbIdRicorso.CFRicorrente, TabTipoAtto.DescrTipoAtto, TbIdRicorso.CompTerritoriale, TbIdRicorso.ValoreControversia, TabStatoLavorazione.DescrStatoLav FROM [ContenziosoEsattoriale].[dbo].[TabAutGiudiziaria] INNER JOIN [ContenziosoEsattoriale].[dbo].[TbIdRicorso] ON [ContenziosoEsattoriale].[dbo].[TabAutGiudiziaria].[IdAutGiud] = [ContenziosoEsattoriale].[dbo].[TbIdRicorso].[IdAutGiud] INNER JOIN [ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso] ON [ContenziosoEsattoriale].[dbo].[TbIdRicorso].[IdRicorso] = [ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[IdRicorso] INNER JOIN [ContenziosoEsattoriale].[dbo].[TabTipoAtto] ON [ContenziosoEsattoriale].[dbo].[TbIdRicorso].[IdTipoAtto] = [ContenziosoEsattoriale].[dbo].[TabTipoAtto].[IdTipoAtto] INNER JOIN [ContenziosoEsattoriale].[dbo].[TabStatoLavorazione] ON [ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[IdStatoLav] = [ContenziosoEsattoriale].[dbo].[TabStatoLavorazione].[IdStatoLav] WHERE ([ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[IdStatoLav] = 1) AND ([ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[IdLavorazione] = 1) AND [ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[IdUtente]  =" & "'" & str_Utente & "'" & " AND [ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[DtChiusura] IS NULL", MyConnection2)
            nomekey = myCommand2.SelectCommand.CommandText()
            Dim schemaTable As DataTable
            Dim i As Integer
            schemaTable = MyConnection2.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
            Me.cmbTable.Items.Clear()
            For i = 0 To schemaTable.Rows.Count - 1
                'Console.WriteLine(schemaTable.Rows(i)!TABLE_NAME.ToString)
                Me.cmbTable.Items.Add(schemaTable.Rows(i)!TABLE_NAME.ToString)
            Next i
            Me.cmbTable.SelectedIndex = 0
            Console.ReadLine()


Ti faccio sapere.

Cordialità Donaz
Animula, vagula, blandula, Hospes, comesque corporis, Quae nunc abibis in loca? Pallidula, rigida, nudula Nec, ut soles, dabis jocos. (Publius Aelius Hadrianus)
52 messaggi dal 15 aprile 2002
Ho dato una lettura a quanto mi hai indicato però ho molte perplessità sull'uso di quel metodo, perchè se non ho capito male è sempre una istruzione sql dove non si ha conoscenza delle tabelle da trattare.
però nel mio caso ho una stringa con una query sql che passo al command per l'accesso al db e per popolare il dataset.
Per evitare di valorizzare la variabile che poi passo al log con l'elenco delle tabelle trattate nella query, manualmente, pensavo di sfruttare qualche proprietà di OleDBadatpter però finora non ho trovato nulla.

Cordialità Donaz
Animula, vagula, blandula, Hospes, comesque corporis, Quae nunc abibis in loca? Pallidula, rigida, nudula Nec, ut soles, dabis jocos. (Publius Aelius Hadrianus)
D'accordo ma nella query sai già quale tabella stai interrogando ... ergo ...

Fabrizio Canevali
52 messaggi dal 15 aprile 2002
Esatto però ho una stringa con la query dove ci sono più tabelle in join.
Dovrei lavorare sulla stringa per recuperare i dati?
Del tuo ergo mi sfugge qualcosa.
Grazie.

Cordialità Donaz
Animula, vagula, blandula, Hospes, comesque corporis, Quae nunc abibis in loca? Pallidula, rigida, nudula Nec, ut soles, dabis jocos. (Publius Aelius Hadrianus)

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.