Newsgroup: it.comp.lang.visual-basic
Titolo: visualizzazione continua di record

Buongiorno a tutti,
avrei il seguente problema. Ho la necessità di visualizzare  n record (ad 
esempio 5) di una tabella access e vorrei visualizzarli uno sotto all'altro 
(come nelle maschere continue di access) come caselle di testo e non come 
foglio dati, in quanto avrei la necessità ulteriori di poter selezionare 
solo 1 o più record tramite una checkbox.
E' possibile avere tale visualizzazione con Visual Basic 6?
grazie
Riccardo

Il 09/01/2008, Riccardo ha detto :

Se vuoi fare una cosa identica alle maschere continue, prendi un frame, 
lo popoli dinamicamente con un array di controlli, imposti la sua 
height a quanto ti serve (quindi poco sotto l'ultimo controllo), e poi 
lo puoi spostare verticalmente con una vscrollbar piazzata nel form, 
variando la Top del frame (che può anche diventare negativa e il frame 
'sparisce' verso l'alto.
Questo, se i record non sono mille.
Se invece hai millemila record e vuoi mostrarne solo cinque, conviene 
popolare staticamente a design il form con i controlli che ti servono, 
poi con la vscrollbar 'trasferisci' il contenuto dei controlli verso 
l'alto o verso il basso, e inserisci il nuovo record nel controllo che 
si libera.
Ciao
Alberto
-- 
Karl Marx: Uno scrittore è produttivo non nella misura in cui produce 
idee, ma nella misura in cui arricchisce l'editore che pubblica le sue 
opere.

 -- 
Mi sai dire anche come faccio a popolare il form con i controlli?
Ipotizziamo 5 record per 4 campi, avrò 5 righe di controlli e 4 colonne.
Una volta popolato il form devo andarci a scrivere dentro il contenuto del 
db, oppure
i controlli possono essere associati ai rispettivi campi e visualizzare 
correttamente i
dati del db (la prima riga ->il 1° record; la seconda riga ->il 2° record e 
così via)
in modo che dopo aver flaggato le checkbox di interesse posso lavorare 
direttamente
sul recordset ed operare come voglio?
grazie
Riccardo 

 sul recordset ed operare come voglio?
Direi assolutamente la prima, ossia scrivere nei controlli i valori 
ricavati dai Fields del recordset, scandendosi i record.
Alberto
-- 
Alessandro Bergonzoni: Il tempo vola e noi no. Strano sarebbe se noi 
volassimo e il tempo no, il cielo sarebbe pieno di uomini con 
l'orologio fermo.


e dopo? quando ho i controlli popolati, non essendo agganciati ad un 
recordset,
come faccio poi a popolare un altro database con gli stessi campi solo per i 
record flaggati?
Praticamente leggo da access e debbo copiare su SQL Server 2005 solo alcuni 
record.
ciao e grazie
Riccardo 

 record.
Direi che con queste premesse, il solo pensare che potessero essere 
agganciati era completamente sballato. Come avresti potuto fare, 
agganciandoli?
Per fare l'inserimento nel nuovo db, utilizzi dei normali comandi di 
Insert.
Alberto
-- 
Charles Baudelaire: C'è un solo modo di dimenticare il tempo: 
impiegarlo.

 complessità bassa può essere soggettivo.
I records dovrebbero essere non più di 200 circa.

__________________
Pensavo di aprire un recordset con tutti i records flaggati e quindi poi
scandendo il recordset, record per record mi aggiungevo i dati in SQL 
Server.
Per ora già faccio la stessa cosa, ma senza una selezione limitata.
Prendo tutto il contenuto della tabella di origine (access) e lo riscrivo in 
quella di destinazione (SQL Server), e
così su altre tabelle con la stessa chiave (in tutto le tabelle sono 5, ma 
la selezione debbo farla solo sulla prima).
Ma dato che non debbo scrivere tutti i dati, ma solo quelli che vengono 
selezionati, in questo modo non risolvo
il problema.
Per ora ho risolto così copiando tutti i records:
#########################
For I = 0 To 4
    Set rst = db.OpenRecordset(nomiTabelle(I))     'connessione DAO ad 
access
    Set rs.ActiveConnection = cnn                          'connessiona ADO 
a SQL Server
    rs.Open "SELECT * FROM " & nomiTabelle(I)
    Do While rs.EOF = False
        rst.AddNew
        For ii = 0 To cat.Tables(nomiTabelle(I)).Columns.Count - 1
            nomeCampo = cat.Tables(nomiTabelle(I)).Columns(ii).Name
            rst(nomeCampo) = rs(nomeCampo)
        Next
        rst.Update
        rs.MoveNext
    Loop
    rs.Close
    Set rs = Nothing
    rst.Close
    Set rst = Nothing
Next
Set cat = Nothing
cnn.Close
Set cnn = Nothing
db.Close
Set db = Nothing
#########################
Ma vorrei filtrare la prima tabella con i flag e successivamente le altre 
con le chiavi primarie della prima.
Se hai un metodo migliore....che ben venga. Con una semplice istruzione 
INSERT non ne venivo a capo
e quindi ho preferito orientarmi su quest'altra soluzione.
grazie
Riccardo

 complessità bassa può essere soggettivo.
I records dovrebbero essere non più di 200 circa.

