Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Siamo tornati nel parco tecnologico di Trieste per il kick-off del programma che mette a disposizione di cinque startup le infrastrutture di ricerca, dal sincrotrone Elettra ai laboratori di genomica e HPC. Roberto Pillon racconta il modello e la visione
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16-ak0001nl combina RTX 5080 Laptop e Ryzen AI 9 HX 375 in un desktop replacement potente e ben raffreddato, con display 240 Hz e dotazione completa. Autonomia limitata e calibrazione non perfetta frenano l'entusiasmo, ma a 2.609 euro è tra le proposte più interessanti della categoria.
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Google ha appena rinnovato la sua celebre serie A con il Pixel 10a, lo smartphone della serie più conveniente se consideriamo il rapporto tra costo e prestazioni. Con il chip Tensor G4, un design raffinato soprattutto sul retro e l'integrazione profonda di Gemini, il colosso di Mountain View promette un'esperienza premium a un prezzo accessibile. E il retro non ha nessuno scalino
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-03-2005, 16:16   #1
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
Visual Basic e Database

Allora, ho un database con una sola tabella e voglio fare un'applicazione che mi consenta di far vedere tutti i campi di questa tabella, come devo fare???
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2005, 16:59   #2
Brigante
Senior Member
 
L'Avatar di Brigante
 
Iscritto dal: Apr 2004
Città: Lariano (RM)
Messaggi: 1372
La richiesta è piuttosto generica, puoi fare in vari modi, dipende da te, uno è questo (a grandi linee):

1) Crei una connessione al database;
2) Crei un recordset;
3) Apri il recordset passandogli la stringa SQL:"SELECT * FROM NOMETABELLA";
4) Prendi una DataGrid, la piazzi su un Form e le passi il recordset tramite la proprietà Recordsource.
5) Avvi l'applicazione ed ecco la tabella che appare.

Se vuoi ulteriori spiegazioni basta chiedere.
__________________
Careful With That Axe
Brigante è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2005, 10:10   #3
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
come faccio a creare la connessione al database???
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2005, 10:43   #4
Brigante
Senior Member
 
L'Avatar di Brigante
 
Iscritto dal: Apr 2004
Città: Lariano (RM)
Messaggi: 1372
Quote:
Originariamente inviato da enrico999
come faccio a creare la connessione al database???
Il database a cui ti vuoi connettere è fatto con Access, in locale sul tuo PC? Oppure è un database remoto su un server (SQL Server, Oracle, ecc.)?
__________________
Careful With That Axe
Brigante è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2005, 10:58   #5
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
si, fatto con acces in locale
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2005, 12:16   #6
Brigante
Senior Member
 
L'Avatar di Brigante
 
Iscritto dal: Apr 2004
Città: Lariano (RM)
Messaggi: 1372
Prima di tutto creati un riferimento ad ADO: Menù Progetto -> Riferimenti..., seleziona ActiveX Data Objects 2.x Library, dove x è il secondo numerello della versione (dipende da quale hai installata); poi premi OK e torna al tuo codice. Nella Form piazzaci una bella Datagrid e poi nel codice (anche nella Form_Load per provare) scrivi:

Dim dbConn As ADODB.Connection
Dim rsetMioRecordset As ADODB.Recordset
Dim sSQL as String

Set dbConn=New ADODB.Connection
Set rsetMioRecordset=New ADODB.Recordset

dbConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=MioDatabase.mdb"
sSQL="SELECT * FROM NOME_TABELLA"
rsetMioRecordset.Open sSQL, dbConn
Set Datagrid1.DataSource=rsetMioRecordset

Avvia il tutto e ti appariranno le informazioni nella datagrid. Quando esci ricordati di chiudere il recordset (rsetMioRecordset.Close) e la connessione al DB (dbConn.Close), non farlo subito altrimenti la datagrid non ti visualizza nulla. Alla fine poi distruggi anche il recordset (Set rsetMioRecordset=Nothing) e anche la Form (Set Form1=Nothing).

P.S.: Questo è il modo più semplice per effettuare una connessione ad un database e visualizzare i dati di una tabella, manca una gestione degli errori ed alcuni parametri nel recordset che dipendono dal tipo di accesso che vuoi effettuare. Volendo puoi specificare anche una password per il database, la dove ci fosse.
__________________
Careful With That Axe

Ultima modifica di Brigante : 23-03-2005 alle 12:21.
Brigante è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2005, 13:13   #7
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
no, io nei riferimenti non ho questa voce:

ActiveX Data Objects 2.x Library


uso visual basic 6 pro.



un'altra cosa, quando parto, devo selezionare come nuovo progetto:

exe standard, progetto dati, o qualcos'altro???
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2005, 13:18   #8
Brigante
Senior Member
 
L'Avatar di Brigante
 
Iscritto dal: Apr 2004
Città: Lariano (RM)
Messaggi: 1372
Quote:
Originariamente inviato da enrico999
no, io nei riferimenti non ho questa voce:

ActiveX Data Objects 2.x Library


uso visual basic 6 pro.



un'altra cosa, quando parto, devo selezionare come nuovo progetto:

exe standard, progetto dati, o qualcos'altro???
...Ce l'hai, ce l'hai, si chiama Microsoft ActiveX Data Objects 2.x Library; ovviamente la x è sostituita dal numerello della versione. Per iniziare devi creare un progetto exe standard.
__________________
Careful With That Axe
Brigante è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2005, 13:50   #9
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
ok, per quanto riguarda Microsoft ActiveX Data Objects 2.x Library tutto OK.

scusa se ti disturbo ancora, ma è la prima volta che uso visual studio, comunque ho un'altra domanda:

scegliendo exe standar nella barra a sinistra non mi compare datagrid, e quindi non so come inserirla....

(per questo prima avevo chiesto se dovevo fare un exe standar o un nuovo porogetto)
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2005, 13:59   #10
Brigante
Senior Member
 
L'Avatar di Brigante
 
Iscritto dal: Apr 2004
Città: Lariano (RM)
Messaggi: 1372
Quote:
Originariamente inviato da enrico999
ok, per quanto riguarda Microsoft ActiveX Data Objects 2.x Library tutto OK.

scusa se ti disturbo ancora, ma è la prima volta che uso visual studio, comunque ho un'altra domanda:

scegliendo exe standar nella barra a sinistra non mi compare datagrid, e quindi non so come inserirla....

(per questo prima avevo chiesto se dovevo fare un exe standar o un nuovo porogetto)
Clicca con il tasto destro del mouse sulla casella degli strumenti (quella dove stanno tutti i controlli), seleziona Componenti... e ti si apre un finestra con un elenco di roba, seleziona Microsoft Datagrid Control, clicca su OK ed ecco la datagrid.

P.S.: Scusami, ma se non conosci l'ambiente di Visual Studio, ti conviene iniziare con delle cose molto semplici, e non con un'applicazione per gestire un database.
__________________
Careful With That Axe
Brigante è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2005, 14:07   #11
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
purtroppo devo farlo per forza....


comunque in questo codice:

Dim dbConn As ADODB.Connection
Dim rsetMioRecordset As ADODB.Recordset
Dim sSQL as String

Set dbConn=New ADODB.Connection
Set rsetMioRecordset=New ADODB.Recordset

dbConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=MioDatabase.mdb"
sSQL="SELECT * FROM NOME_TABELLA"
rsetMioRecordset.Open sSQL, dbConn
Set Datagrid1.DataSource=rsetMioRecordset


cosa devo mettere al posto di MioRecordset???

(Al mosto di MioDatabase ho messo il nome del mio database e al posto di NOME_TABELLA ho messo il nome della tabella che ho nel database.)
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2005, 14:40   #12
Brigante
Senior Member
 
L'Avatar di Brigante
 
Iscritto dal: Apr 2004
Città: Lariano (RM)
Messaggi: 1372
Quote:
Originariamente inviato da enrico999
purtroppo devo farlo per forza....


comunque in questo codice:

Dim dbConn As ADODB.Connection
Dim rsetMioRecordset As ADODB.Recordset
Dim sSQL as String

Set dbConn=New ADODB.Connection
Set rsetMioRecordset=New ADODB.Recordset

dbConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=MioDatabase.mdb"
sSQL="SELECT * FROM NOME_TABELLA"
rsetMioRecordset.Open sSQL, dbConn
Set Datagrid1.DataSource=rsetMioRecordset


cosa devo mettere al posto di MioRecordset???

(Al mosto di MioDatabase ho messo il nome del mio database e al posto di NOME_TABELLA ho messo il nome della tabella che ho nel database.)
Il recordset puoi chiamarlo come vuoi, di solito lo si chiama con un mome che identifica più o meno l'azione che compie, per esempio per leggere una tabella di utenti si può creare un recordset chiamato rsetUtenti; la parola rset viene di solito messa per indicare che appunto ci si riferisce ad un recordset, ma potresti anche scrivere Dim Pluto as ADODB.Recordset.
Ricordati, inoltre, che il nome del database deve essere compreso di percorso, cioè, per esempio: C:\Progetto\Database\NomeDatabase.mdb
__________________
Careful With That Axe
Brigante è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2005, 15:10   #13
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
ok, altra domandina stupida (non per me).

come faccio a creare un recordset???
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2005, 15:48   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
E' già stato creato nel codice sopra...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2005, 18:09   #15
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
allora scusate, comunque non ho capito.

Quando scelgo file exe, devo scrivere il codice della connessione al database.

(potete dirmi solo questo codice???)


poi devo creare un recordset (pensavo che si facesse più o meno come con dreamweaver, non so se lo avete già usato, invece a quanto ho capito anche qua scrivo il codice a mano)
se anche per il recordset pèotete scrivermi solo il pezzo di codice per il recordset...


così almeno capisco:
questo pezzo serve per connetermi al database
e quest'altro è il recordset
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2005, 23:51   #16
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Ma anche per il recordset il codice lo hanno già postato

facendo un sunto:

clicca sul form col tasto dx e scegli visualizza codice in modo da aprirti l'editor e scrivi:

Codice:
'questo è un commento, come vedi i commenti si indicano con l'apice singolo e sono molto importanti

Option Explicit 'con questa dichiarazione intendiamo che le variabili che dichiareremo sono visibili a tutti gli oggetti del form

Dim db As ADODB.Connection 'dove db è un nome arbitrario ed è il database

Dim rs  As ADODB.Recordset 'dove rs è un nome arbitrario ed è il recordset

Dim sSQL As String 'una comoda variabile di tipo stringa


Private Sub Form_Load() 'cioè, ogni volta che aprirò il form

Set db = New ADODB.Connection 
Set rs = New ADODB.Recordset

'instauro la connessione con il database

db.ConnectionString "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & App.Path & "\tuodatabase.mdb"

db.Open 'apro il database

sSQL = ""  'in modo che ogni volta che apro il form ho il buffer vuoto
sSQL = sSQL "SELECT * FROM nome_tabella_tuo_database" & VbCrlf
sSQL = sSQL & "ORDER BY Nome_Campo" ' ordino i dati in base a qualcosa

Set rs = cn.Execute(sSQL) 'eseguo la SQL che mi restituirà il recordset  


Set Datagrid1.DataSource = rs 'visualizzo i dati sulla griglia

End Sub ' Fine Funzione Form_Load()
E' importante anche che quando chiudi il Form, o esci dal programma, o se il programma crasha, che prevedi una funzione che sganci l'applicazione dal database:

Codice:
Private Sub Form_Unload(Cancel As Integer)
'sgancio il database alla chiusura del form
   
 If cn.State = adStateOpen Then 'se il db è aperto
      
        If rs.State = adStateOpen Then 'se ho dei recordset aperti
      
           rs.Close 'chiudo il recordset
         
        End If 
      
      cn.Close 'chiudo la connessione al database
    
   End If 
    
    Set cn = Nothing 'nessuna connessione attiva
    Set rs = Nothing 'nessun recordset attivo
    
 End Sub
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 24-03-2005, 21:31   #17
Brigante
Senior Member
 
L'Avatar di Brigante
 
Iscritto dal: Apr 2004
Città: Lariano (RM)
Messaggi: 1372
Mi permetto di fare alcune precisazioni:
Non serve scrivere sSQL="" perchè la Form_Load viene eseguita una sola volta all'avvio, quindi la variabile viene dichiarata ed è automaticamente vuota, non si tratta di un buffer.
Per quanto riguarda Option Explicit, ho letto il commento a fianco, ma non ho capito se il commento è riferito alle variabili sotto di lui o ad Option Explicit, se fosse riferito a quest'ultimo è sbagliato, perchè invece serve per avere una dichiarazione esplicita ed obbligatoria delle variabili che verranno usate, questo per evitare di scrivere una variabile sbagliata o non dichiarata, infatti mettendo Option Explicit e scrivendo una variabile non dichiarata si avrà un errore in fase di esecuzione.
__________________
Careful With That Axe
Brigante è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2005, 09:43   #18
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
ho provato con il codice che mi ha detto, ma subito alla prima riga mi da un errore:

Dim Agenda As ADODB.Connection 'dove db è un nome arbitrario ed è il database


L'errore è il seguente:

Errore di compilazione: Tipo definito dall'utente non definito



Possibile che nessuno mi dica chiaramete come si fa la connessione ad un database???
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2005, 09:48   #19
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Te lo dice perchè non hai fatto questa operazione:

"Prima di tutto creati un riferimento ad ADO: Menù Progetto -> Riferimenti..., seleziona ActiveX Data Objects 2.x Library, dove x è il secondo numerello della versione (dipende da quale hai installata);"
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2005, 10:07   #20
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da Brigante
Mi permetto di fare alcune precisazioni:
Non serve scrivere sSQL="" perchè la Form_Load viene eseguita una sola volta all'avvio, quindi la variabile viene dichiarata ed è automaticamente vuota, non si tratta di un buffer.
E' giusto, hai ragione, è dovuto al fatto che in genere io per i recordset associo tutto a comodi pulsanti.

Quote:
Per quanto riguarda Option Explicit, ho letto il commento a fianco, ma non ho capito se il commento è riferito alle variabili sotto di lui ......-cut-
Rileggendo il mio post, in effetti non era chiaro dalla posizione del commento, ma non intendevo assolutamente il secondo caso.

Grazie cmq, per le precisazioni

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo HP OMEN MAX 16 con RTX 5080: potenza da desktop ...
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Annunci pubblicitari sulla TV quando cam...
Prezzi aumentati del 50% durante la nott...
Sconti studiati per singolo utente: Sony...
Addio alla Kia Niro EV, il crossover sar...
Apple crede nel suo iPhone Fold: la prod...
Fortnite, un nuovo listino per i pacchet...
Ecco i nuovi Sonos Play ed Era 100 SL: d...
Razer svela il futuro del gaming potenzi...
Tre robot Narwal in offerta: pulizia aut...
Gracenote denuncia OpenAI: ChatGPT addes...
Microsoft AI Tour Milano: dall'efficienz...
Asus ExpertBook Ultra: Intel Core Ultra ...
Intel presenta i processori desktop Core...
Un'AI ha trovato una falla critica in Wi...
OPPO Find N6 rivoluziona i foldable: add...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 19:43.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v