Buona sera, inizio con una premessa, sono nuovo del forum e non sono un programmatore, per vivere faccio altro, ma occasionalmente per sopperire a delle mancanze o per necessità legate all'attività lavorativa mi diletto a scrivere del codice più o meno funzionante...
Da circa ben 3 settimane mi sto affacciando sul mondo VB.net.
Leggendo e documentandomi qua e la sono riusco ad improvvisare qualcosa, solo che adesso ho un problema, ...forse più di uno che non riesco a risolvere.
Sto cercando di realizzare una piattaforma che racchiuda:
diverse macro excel, sviluppate nel corso degli anni
alcune funzionalità aggiuntive derivanti da nuove attività
l'inserimento di un database come storico e contenitore delle informazioni.
Tali Informazioni risiedono su un database PostgreSQL di cui dispongo un accesso in sola lettura e un nuovo database Access di mia creazione.
La nuova piattaforma tinge informazioni da entrambe i database e li visualizza su delle maschere, qui il primo problema:
l'accesso al database PostgreSQL non può essere fornito a tutti gli utilizzatori della piattaforma, pensavo di "travasare", periodicamente, il contenuto di alcune tabelle da questo database nel mio Access, ma non ho idea di come connettermi ad un datatabese per leggere e in contemporanea connettermi all'altro db per scrivere.
Il mio secondo problema consiste nella necessità di esportare alcuni dati dal database Access in un foglio excel, qui avrei parzialmente risolto con questo codice:
Dim ConnAccess As New OleDbConnection(FormAccesso.strConnectTransmissions)
Dim Selezionafile As SaveFileDialog
Dim ExcelFile As String
Selezionafile = New SaveFileDialog() With {
.Filter = "File excel (*.xls)|*xls",
.Title = "Scegli il nome del file da salvare"
}
Selezionafile.ShowDialog()
ExcelFile = Selezionafile.FileName
If Not ExcelFile.EndsWith(".xls") Then
ExcelFile += ".xls"
End If
Dim cm As New OleDbCommand("SELECT * INTO [Excel 8.0;Database=" & ExcelFile & "].[Foglio1] FROM AnalysisType", ConnAccess)
Try
ConnAccess.Open()
cm.ExecuteNonQuery()
Catch ex As Exception
Console.WriteLine(ex.Message)
Finally
If ConnAccess.State = ConnectionState.Open Then
ConnAccess.Close()
End If
End Try
Con questa porzione di codice riesco a fare parzialmente quello che mi serve, in quanto alcune informazioni risiedono anche nel database PostgreSQL, ma non solo, da questo database dovrei estrapolare solo le informazioni inerenti ai record caricati nella tabella "AnalysisType" del file di Access; quindi eseguire un query per estrapolare i dati, tornando al primo problema anche in questo caso dopo vari tentativi non sono riuscito a risolvere.
Ho provato anche estrapolare la tabella dal database PostgreSQL utilizzando un codice simile a quello proposto, ma non ha funzionato, e qui ho 2 ipotesi:
credo che avendo delle credenziali in sola lettura l'istruzione "ExecuteNonQuery" non venga eseguita;
la stringa sql, da utilizzare nel comando "NpgsqlCommand" sia leggermente diverso dal comando "OleDbCommand"
Probabilmente sto approcciando il problema dal punto di vista sbagliato.
Queste sono attualmente le due problematiche che mi stanno bloccando e che non riesco a risolvere.
Avete qualche suggerimento?
Grazie