PDA

Visualizza la versione completa : [Borland C++ Builder 6] Connessione a Database Access


Mauri94
22-07-2012, 13:06
Salve a tutti ragazzi, purtroppo cerco e ricerco ma materiale per questo programma non ne trovo proprio, ho scaricato il manuale sia in italiano che in inglese ma non mi aiuta proprio. Comunque, come da titolo, vorrei effettuare la connessione al mio database creato con Microsoft Access 2003, il nome è 'db1' e per ora contiene solo una tabella 'Profili'. Non capisco quale oggetto trascinare per effettuare la connessione. Ad esempio c'è 'BDE' , 'ADO', e altre categorie che possono stabilire una connessione. Io ho provato a trascinare l'icona di BDE per stabilire una connessione. Una volta trascinata ho modificato i parametri per stabilire una connessione, però ho avuto un problema! Innanzitutto i parametri li ho modificati così:

- AliasName : Database di microsoft access ;
- DatabaseName: db1
- Connected : True

Una volta fatto questo mi è comparso un login, con UserName e Password.. ma che roba è?

Problema secondario è, una volta stabilita la connessione, quali sono le varie funzioni per leggere e visualizzare l'intera tabella oppure cercare all'interno dei campi delle informazioni? Ultima cosa è: se voglio inserire un nuovo elemento nel database del mio programma, ovviamente devo usare le query SQL, ma dove le dovrei inserire ?

Grazie a tutti , anche se ho fatto parecchie domande.

oregon
22-07-2012, 13:15
http://bcbjournal.org/articles/vol4/0007/Using_the_ADO_access_components.htm?PHPSESSID=48b0 1c6ec2f2cdd216e95527de8bae99

ti può essere d'aiuto

Mauri94
22-07-2012, 13:16
Grazie mille, ci do subito un occhiata e vedo cosa ne esce fuori. :)

Mauri94
22-07-2012, 13:44
Grazie a quella pagina ho stabilito una connessione con il Database di access, purtroppo non spiega altro quel documento! Quindi la mia domanda cambia in :

- CONNESSIONE ADO
- Come posso visualizzare l'intera tabella ?
- Come posso cercare all'interno della tabella ?
- Come posso aggiungere degli elementi all'interno di una tabella ?

oregon
22-07-2012, 13:59
Come no?

Utilizza il componente

TADOTable

oppure il

TADOCommand

per eseguire una query.

Mauri94
22-07-2012, 14:00
Io con il prefisso 'TADO' non ho oggetti, ho oggetti che iniziano con 'ADO', ad esempio ADOQuery, ADOTable.

oregon
22-07-2012, 14:10
Leggi anche questo pdf ...

http://www.teiser.gr/icd/staff/lantzos/notes/optikos/bcppb6_book.pdf

se cerchi bene su internet c'è tutto quello che ti serve per sperimentare e ottenere risultati, ovviamente con l'impegno necessario.

Mauri94
22-07-2012, 15:06
Grazie Oregon hai ragione, devo essere più paziente nel cercare. Comunque sia, sono riuscito a far eseguire la prima query, l'inserimento di un record all'interno di una tabella. Però c'è un problema, innanzitutto ho una tabella di nome PROFILI fatta così:

ID : 1
Username : Mauri
Password : ****

Ora vado ad eseguire la seguente query: INSERT INTO PROFILI VALUES (2, 'Giacomo', 'prova')

Appena eseguo la query mi esce il seguente errore: ADOQUERY1: CommandText does not return a results set.

ADOQUERY1 è l'oggetto che mi fa eseguire la query, però, se io vado a controllare nel database, il record è stato correttamente inserito.. allora perché compare l'errore ? Come posso fixare questo ?

Ho fatto un'altra prova, stavolta ho aggiungo un bottone che al click avrebbe dovuto eseguire la query, stavolta l'errore è il seguente:

Project 'Project1.exe' raised exception class EOleException with message 'Il provider corrente non supporta la restituzione di set di record multipli da un 'unica esecuzione'. Process stopped.

E a differenza di prima, la query non viene eseguita.

Mi aiutereste a capire ?

Mauri94
22-07-2012, 15:34
Allora ho trovato la soluzione agli errori, posto qui il commento che ho trovato in rete così se qualcuno dovesse avere lo stesso problema può trovare la discussione su google:

'Questo errore e' tanto comune quanto insidioso: probabilmente hai usato una
adoquery per effettuare una DELETE via sql.
Il problema e' che la adoquery, per come e' concepita, dopo aver eseguito il
codice sql si aspetta che il provider gli ritorni un dataset. Ma questo non
avviene in caso di delete. Ecco perche' il componente solleva l'errore.

Prova a utilizzare l'adocommand con il metodo execute.'

Loading