Newsgroup: it.comp.lang.delphi
Titolo: Accesso ai dati: io ci sto diventando scema...

Premessa: va bene che ADO non è stato pensato per Delphi, e quindi nemmeno 
dovrei usarlo... va bene che quando uno pensa "accesso ai dati" qualsiasi cosa 
gli viene in mente (C++, PHP, Visual Basic, ASP, ecc) tranne Delphi... va bene 
che quando uno dice "Delphi" subito gli scaricano addosso una valanga di VCL o 
lo spediscono dritto dritto da torry...
MA: vorrei realizzare un semplice address book  -esteso (molti, anzi, quasi 
tutti i nominativi - si parla di record in questo caso, vero? almeno questo 
l'ho capito? - hanno più di un numero di telefono e/o più di un indirizzo)- con 
funzioni di ricerca e multiutenza (in pratica poi si tratta solo di permettere 
ad un solo user di modificare il database).
DUNQUE: letto help di Delphi. Tutto su BDE e Interbase. E va bene... scaricata 
documentazione di ADO. Tutta per VB o C++. E va bene... andata da Torry: solo 
VCL DB-aware. E va bene... seguiti i link di torry. Database, per questi 
signori, significa VCL, evidentemente. E va bene...
Per concludere: cosa ho capito? per avviare il tutto devo usare una Connection, 
creare un Recordset, aggiungere un Record all'insieme Records e aggiungerci i 
Field. Una volta fatto ciò, ai successivi avvi mi basta leggere i valori, ed 
eventualmente aggiungere nuovi record... e qui son dolori... come distinguere 
l'utente-amministratore con permesso di scrittura se si tratta di un db locale? 
come recuperare effettivamente il valore dei field? ma soprattutto, come 
implementare la ricerca? e un chiarimento: le stringhe SQL sono indispensabili 
anche in ADO o se ne riesce a fare a meno?
grazie in anticipo anche solo a chi mi fornirà una strada o uno spunto da 
seguire...


Non puoi usare un file ad accesso random dove imposti magari due indirizzi,
due numeri di telefono.
oppure un file di testo con la seguente struttura (segue esempio):
Riga di esempio
100Nome,200Cognome,300Indirizzo,400Telefono1,400Telefono2,500Cellulare
i primi tre caratteri indicano il codice del campo seguiti dal valore che
questo deve avere e usi come separatore di campo la virgola (o un altro
carattere) in questo modo risolvi il problema degli indirizzo doppi.
alla prossima, ciao.

ad un solo user di modificare il database).
Comincia con lo stabilire quale database vuoi utilizzare.
Consiglio: Interbase.
Per realizzare quello che desieri devi creare alcune tabelle:
Nominativi
CodiceNominativo
CognomeNominativo
NomeNominativo
Indirizzi
CodiceIndirizzo
CodiceNominativo
Indirizzo
Localita
Cap
Provincia
Recapiti
Codicerecapito
CodiceIndirizzo
Recapito
Ora, secondo me, sei agli inizi.
Se è così e se vai di fretta lascia stare ADO e usa TDatasource e TQuery.
Se usi ADO usi sempre le sintassi SQL.
Quello che cambia non è la sintassi ma il modo con il quale ci si collega al
database.
Per ora non voglio ingolfarti.Se vuoi altri dettagli fammelo sapere.
Saluti
AS
"Se è Microsoft non funziona"

 seguire...
Francesco
IACT Member.
http://frengo.dragonfire.net/

doppi. 
avevo pensato anche soluzioni piů eleganti, come la classica accoppiata 
dat+idx, in cui nome_database.dat č un file di record a lunghezza variabile 
e nome_database.idx č un file header contenente gli offset dei vari record. 
Il problema č che metti che il primissimo record debba venire riscritto, ma 
con cinque, sei byte in piů. Dovrei riscrivere praticamente tutto il .dat! 
dovrei quindi usare un file swap per non occupare troppa memoria (il db 
dovrebbe arrivare a contenere qualche centinaio di record)... insomma, un 
bel macello... idem per eseguire ad esempio una ricerca nel field "numero 
di telefono". Dovrei salvare in un file temporaneo tutti i field ed 
eseguire una ricerca... alla fine mi sono detta: a questo punto faccio che 
usare un database

Per ora non voglio ingolfarti.Se vuoi altri dettagli fammelo sapere.
mi rifarò viva :)

Spero di esserti stato di aiuto.
più o meno ^____^
grazie lo stesso

 grazie lo stesso
Francesco
IACT Member.
http://frengo.dragonfire.net/