Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Controllo Data

Stavo realizzando un progetto che faceva uso di un database, usato appunto
con il controllo data. Quando apro un nuovo form, che serve per aggiungere
un nuovo record nel database tramite il metodo Data1.Recordset.AddNew, il VB
mi da un errore: Variabile oggetto o variabile del blocco With non
impostata. Se invece metto questa riga dentro un timer l'errore non si
presenta. Come posso fare per aggiungere un nuovo record senza usare un
timer (che brucia risorse di sistema)? Anche perchè se dovessi fare un ciclo
ricorsivo per inserire n record nuovi in questo modo è impossibile. E perchè
mi da quell'errore? Ringrazio anticipatamente chiunque mi possa dare una
mano.
-Ciao-
-Luca450Mhz-

posta un pò di codice ... dalla descrizione non si capisce molto ...
CIAO

 ha scritto nel messaggio
news:vBYy8.109271$SR5.2...@twister1.libero.it...


 ha scritto nel messaggio
news:SMYy8.109337$SR5.2...@twister1.libero.it...


 mano.
Come già ti hanno detto il problema sta nel fatto che in form_load il
controllo ancora non è inizializzato, quindi devi aspettare che il
caricamento del form sia completato, ecco il perchè del timer che risolve il
problema.
Più che altro la sfiga del timer, oltre che al bruciare risorse (se lo fai
girare una volta sola non è che ne bruci chissa quante) è che non ti
assicura una sequenzialità, sincornia di un certo tipo con altri eventi,
routine, funzioni, che magari devono necessariamente girare prima o dopo
questa procedura.
Il timer è asincrono quindi in alcuni casi utile ma normalmente
inaffidabile, cio' è male.
il mio consiglio è di non usare il controllo data.
Gestisci tutto da codice.
In questo modo puoi anche sfruttare l'evento form_load
Sul sito comune e in giro per la rete trovi molti esempi.
Ciao

 E all'Addnew che mi da l'errore.
1. Data1 deve essere all'interno di Form2
2. In mezzo alle due istruzioni devi specificare :
Data1.RecordSource="Select * FROM MiaTabella"
Fammi sapere
CIAO

 ha scritto nel messaggio
news:IEZy8.27166$W9.6...@twister2.libero.it...


 ha scritto nel messaggio
news:U_Zy8.27345$W9.6...@twister2.libero.it...



Ciao Luca,
DAO e ADO sono due metodi di accesso ai dati,
che utilizzi, senza saperlo, a quanto dici, anche quando
nei tuoi progetti inserisci controlli data ( DAO ) o
ADODC ( ADO ).
Con DAO avrai l'oggetto Database, con ADO l'oggetto
Connection ed entrambi prevedono l'oggetto Recordset.
Tutti gli oggetti elencati hanno proprietà, metodi ed eventi,
a volte simili altre volte completamente diversi...
usare DAO o ADO significa semplicemente scegliere l'uno o
l'altro modello di oggetti per accedere ai dati.
Inconsapevolmente, utilizzando il controllo data stai
utilizzando il modello di oggetti DAO, di cui il controllo
in sè altro non è che un ..interprete... ( pessimo...)
quindi...
a) molla i controlli associati ai dati e impara a gestire
database da codice : digita Database o Connection
nell'ide di vb e poi premi il famigerato F1, segui tutti
i "vedere anche", "si applica a" e sbircia tutti gli esempi...
alla fine gliela sfanghi di sicuro... ;-)
b) fai una ricerca sul tuo PC digitando le seguenti stringhe :
dao*.* e Ado*.*
vedrai che verranno fuori un paio di guide e di file html compilati
che ti aiuteranno non poco a comprendere come accedere ai
dati usando le due differenti tecnologie... ti consiglio ADO,
DAO limiterebbe molto il tuo raggio d'azione.
Infine in rete trovi decine di tutorials gratuiti e progetti esplicativi,
... il sito comune che ci sta a fare?
Non puoi imparare a programmare partendo dal controllo data,
senza sapere quello che c'è dietro...
Ciao e buon lavoro
 Valter

 queste cose le  conosco solo per sigla, ma non so cosa siano....
Innanzi tutto impara, quando scrivi sull'NG  a quotare, cioè riportare una
sintesi del messaggio a cui rispondi prima della tua risposta, un po' come
ho fatto io ora, per il resto se hai dei dubbi chiedi quando vuoi, ci fa
piacere, però senza esagerare e chiedi solo se ti sei sforzato almeno un po'
già da solo a cercare materiale in rete e capire la soluzione al tuo
problema in maniera autonoma, un programmtore comincia ad essere tale quando
si accorge di essere abbastanza autonomo.
La differenza tra ado e dao già te l'hanno data.
Per rispondere alla tua domanda, quando dico gestire tutto da codice intendo
questo:
'in parole molto povere'
 invece di trascinare il controllino data o adodc sul form dichiari e
istanzi variabili che ti consentano di usufruire degli oggetti che sono a
tua disposizione per l'accesso ai dati (impostando le dovute librerie nei
riferimenti del progetto) scrivendo codice, quindi rendendo il tutto molto
più affidabile, veloce, pulito ma soprattutto dinamico e scalabile (per
ado).
Non sai cosa è un'oggetto?
'in parole povere'
immaginalo come una scatola che contiene degli strumenti (forbici, penne
matite fogli etc...)
dichiari come vuoi chiamare la scatola
dim cn as adodb.connection
la crei fisicamente
set cn = new adodb.connection
finalmente puoi sfruttare uno degli strumenti contenuti all'interno (in
questo caso ad esempio possiamo utilizzare lo strumento "metodo" open per
aprire la connessione al database
cn.open"PARAMETRI VARI DI CONNESSIONE"
E' tutto molto più semplice di quanto sembri, basta guardare le cose
dall'angolazione giusta.
Non sai cosa sono i riferimenti?
'in parole povere'
Quando crei un progetto, devi dire a visual basic quali librerie vuoi usare
(immagina le librerie come dei comodini che contengono le scatole di cui
parlavamo prima)
Nel menù progetto trovi la voce riferimenti.
Trovi un sacco di voci, pensa.... le puoi usare tutte!!!!sono tutte a tua
disposizione! che figata vero?
Ogni libreria contiene un determinato tipo di oggetti, ad esempio per ado
devi spuntare
ACTIVEX DATA OBJECT (mi pare, vado a memoria)
da questo momento avrai disponibili le scatole contenute al suo interno.
Spero di esserti stato utile, in ogni caso ti consiglio vivamente di
comprarti un libro, della serie Programmare Vb o robe del genere, più o meno
vanno bene tutti ma se vuoi un consiglio prima di fare l'acquisto sfogliali
e cerca di capire tra quelli che ti vengono offerti dal rivenditore quale
effettivamente ti sembra più semplice e intuitivo.
Bye e...
good cooding!

 Fammi sapere
Il controllo data è presente nel form2. Per quanto riguarda il recordsource
non serve, in quanto, dal timer, funziona bene senza questo parametro. COme
è stato detto prima, dipende dall'inizializzazione del controllo data.
GRAZIE cmq!!!
-Ciao-
-Luca450Mhz-


Io ho smepre pensato che il controllo data non sia molto efficiente, perchè
è un controllo per principianti (come me) del database, e quindi non
permette una gestione ottimale. La mia meta è quella di poter gestire un
database da codice. Seguirò sicuramente i tuoi consigli per trovare delle
guide e imparare!!
Grazie tante!!
-Ciao-
-Luca450Mhz-

 sintesi del messaggio a cui rispondi prima della tua risposta,


 quotare!!!
Stendiamo un velo pietoso
avevo scritto
---
quotare, cioč riportare una
sintesi del messaggio a cui rispondi prima della tua risposta, un po' come
ho fatto io ora
---
Ti pare di averlo fatto?

> Ti pare di averlo fatto?
Non so come, ma mi era sfuggito...... Excuse me !!!!!
-Ciao-
-Luca450Mhz-

> Ti pare di averlo fatto?
Guarda il messaggio nel newsgroup... io ho quotato in maniera corretta!!! Ho
appena controllato, tutto OK! Errore di distrazione??
-Ciao-
-Luca450Mhz-