Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Save in access listbox
Forum - Visual Basic 6 - Save in access listbox

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
magicolotto (Normal User)
Expert


Messaggi: 338
Iscritto: 21/01/2008

Segnala al moderatore
Postato alle 11:10
Martedì, 18/08/2009
Codice sorgente - presumibilmente Visual Basic 6

  1. For I = 0 To List1.ListCount - 1
  2. sql = "select * from gruppo"
  3. rec.Open (sql), cn, adOpenDynamic, adLockOptimistic
  4. rec.AddNew
  5.    List1.ListIndex = I
  6.  
  7.   numeri = List1.List(I)
  8.  
  9. rec.Fields("list1") = numeri
  10.  
  11.  
  12. rec.Update
  13.  
  14.  
  15. rec.Close
  16.  
  17. Next I


con questo metodo

mi inserisce ogni riga della lista in un recordset diverso


mentre il mio intento e inserire tutte le righe della lista in un solo recordset
grazie

PM Quote
Avatar
hemmaus (Normal User)
Pro


Messaggi: 96
Iscritto: 15/07/2009

Segnala al moderatore
Postato alle 13:27
Martedì, 18/08/2009
Ciao non ha molto senso quelle che vuoi fare, facendo come vuoi avrai maggiori problemi nel recupero delle informazioni. Ma se così desideri un motivo ci sarà.

Fai così:
Codice sorgente - presumibilmente VB.NET

  1. Dim stringa as string
  2.  
  3. For I = 0 To List1.ListCount - 1
  4. sql = "select * from gruppo"
  5. rec.Open (sql), cn, adOpenDynamic, adLockOptimistic
  6. rec.AddNew
  7.    List1.ListIndex = I
  8.  
  9.   numeri = List1.List(I)
  10.  
  11. Stringa=Stringa + " " + numeri
  12.  
  13. Next I
  14.  
  15. rec.Fields("list1") = Stringa
  16. rec.Update
  17. rec.Close



Non l'ho provato, ma dovrebbe andare.
Ciao

PM Quote
Avatar
magicolotto (Normal User)
Expert


Messaggi: 338
Iscritto: 21/01/2008

Segnala al moderatore
Postato alle 15:46
Martedì, 18/08/2009
grazie assai

lo provero' stasera

:k:

se dovessi importare invece nella listabox il contenuto del campo?



PM Quote
Avatar
magicolotto (Normal User)
Expert


Messaggi: 338
Iscritto: 21/01/2008

Segnala al moderatore
Postato alle 20:27
Martedì, 18/08/2009
ciao

mi da errore

" incompatiblita tra tipi "

l'errore di debug me  lo da su questa riga


rec.Fields("list1") = stringa

come mai
sara' per l'archivio?

PM Quote
Avatar
magicolotto (Normal User)
Expert


Messaggi: 338
Iscritto: 21/01/2008

Segnala al moderatore
Postato alle 21:19
Martedì, 18/08/2009
ok corretto

era il db

ho provato il codice

fa bene, inserisce tuto su un recordset
pero inserisce tanti recordset quanti sono le line della list box

PM Quote
Avatar
hemmaus (Normal User)
Pro


Messaggi: 96
Iscritto: 15/07/2009

Segnala al moderatore
Postato alle 21:58
Martedì, 18/08/2009
Testo quotato

Postato originariamente da magicolotto:

pero inserisce tanti recordset quanti sono le line della list box




in che senso ? i recordset sono valorizzati sempre con gli stessi valori ?
Mi sembra strano.

Prima di fare l'update visualizza il contenuto di stringa in una Textbox, vedi cosa registra.

PM Quote
Avatar
magicolotto (Normal User)
Expert


Messaggi: 338
Iscritto: 21/01/2008

Segnala al moderatore
Postato alle 22:45
Martedì, 18/08/2009
se scrivesse un solo recordset andrebbe bene

ma lo duplica per quanto sono le righe della lista

ho cercato di scriverla la stesa i diverso modo..ma nulla

PM Quote
Avatar
magicolotto (Normal User)
Expert


Messaggi: 338
Iscritto: 21/01/2008

Segnala al moderatore
Postato alle 22:48
Martedì, 18/08/2009
da come l'avevi scrita

ho dovuto spostare next i
alla fine
dopo rec.close

per altrimenti dava errore

l'operazione non è consentita se l'oggetto è  aperta

pero'  spostandolo crea tanti recordset quanti sono le righe della listbox

cmq... sescrivesse un solo recordset andrebbe bene per ora

salvo problemi quando poi  dovro' riapopolare la lista dallo stesso recordset
grazie

PM Quote
Avatar
hemmaus (Normal User)
Pro


Messaggi: 96
Iscritto: 15/07/2009

Segnala al moderatore
Postato alle 12:59
Mercoledì, 19/08/2009
Allora non devi spostare il Next, altrimenti ti crea tanti record quanti sono i valori della ListBox.

Così:

Codice sorgente - presumibilmente VB.NET

  1. Dim stringa, numeri as string
  2. Dim cn As ADODB.Connection
  3. Dim rs As ADODB.Recordset
  4.  
  5. For I = 0 To List1.ListCount - 1
  6.  
  7.    List1.ListIndex = I
  8.    numeri = Numeri + "#"+ List1.List(I)
  9.  
  10. Next I
  11.  
  12. stringa = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\test\database.mdb"
  13.  
  14. Set cn = New ADODB.Connection
  15. Set rs = New ADODB.Recordset
  16.  
  17.     cn.Open stringa
  18.     rs.Open "TABELLA", cn, 3, 3       'qui metti il nome della tabella access
  19.  
  20.     rs.AddNew
  21.         rs("list1") = numeri
  22.     rs.Update
  23.  
  24.     Set cn = Nothing
  25.     Set rs = Nothing
  26.  
  27.     MsgBox "Inserimento effettuato", vbOKOnly, "CONFERMA"



Scusa ma il tuo era un po' confuso.
In questo modo hai una connessione al DB stabile e semplice da usare.
Inoltre la stringa sarà del tipo "1ValoreList1#2ValoreList1#NvaloreList1" quindi i valori sono separati dal # sarà più semplice poi recuperarli.

Fammi sapere.
Ciao.

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo