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 - Salvataggio img in Access e campo testo in file txt
Forum - Visual Basic 6 - Salvataggio img in Access e campo testo in file txt

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Swanny (Normal User)
Rookie


Messaggi: 25
Iscritto: 25/07/2009

Segnala al moderatore
Postato alle 0:10
Venerdì, 31/07/2009
Ri-salve :D Dopo aver risolto con buoni risultati il mio topic precedente, rieccomi qui con un nuovo quesito. Come detto sto programmando un programmino in VB6 dove archiviare la miriade di libri/fumetti che possiedo. Al programma vorrei aggiungere la possibilità di visualizzare nella form la scansione della copertina (per lo + per i fumetti) che cambi per ogni nuovo record, salvandola nel database. Girando sul web ho letto che è sconsigliato fare questo tipo di salvataggio in quanto gonfia enormemente la dimensione del database, ma al momento non mi importa molto visto che lo spazio per fortuna non mi manca. Oppure invece del salvataggio "fisico" dell'immagine nel database, salvare SOLO il percorso dove risiede l'immagine nel database, così da richiamarla con + facilità ad ogni record.

Ho fatto questa prova creando un bottone (DATASOURCE data1; DATAFIELD copertina), una casella di testo (DATASOURCE data1; DATAFIELD copertina) e un campo image:

Con questo apro l'immagine nel campo image e ne visualizzo il percorso nella textbox

Private Sub Cmdcaricaimmagine_Click()
CommonDialog1.ShowOpen
Image1.Picture = LoadPicture(CommonDialog1.FileName)
Text12.text =CommonDialog1.FileName
End Sub


Al click sul campo image compare l'immagine da me selezionata caricando il percorso dalla textbox

Private Sub Image1_Click()
If Dir(Text12.Text) <> "" then
  Image2.Picture = LoadPicture(Text12.Text)
End If
End Sub


Ora per salvare il percorso dell'immagine nel database come faccio? Pensavo che il comando Data1.Recordset.AddNew salvasse anche questo campo. Da notare che ho dovuto riselezionare la nel campo DATASOURCE di data1 il percorso del database altrimenti non potevo specificare i campi nel pulsante sopra citato che nel topic prima avevo assegnato al form load:

Private Sub Form_Load()
Data1.DatabaseName = App.Path & "\Listafilm.mdb"
End Sub

Per essere + chiaro posto il codice intero:

Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2. Dim criterioricerca As String
  3.  
  4. Private Sub cmdaggiorna_Click()
  5. 'Ricollega il recordset alla tabella aggiornando i dati
  6. Data1.Refresh
  7. End Sub
  8.  
  9. Private Sub cmdaggiungi_Click()
  10. Data1.Recordset.AddNew
  11. End Sub
  12.  
  13. Private Sub cmdcarica_Click()
  14.   Data1.UpdateRecord
  15.   Data1.Recordset.Bookmark = Data1.Recordset.LastModified
  16. End Sub
  17.  
  18. Private Sub cmdelimina_Click()
  19.     Dim Opzione
  20.     Opzione = MsgBox("Vuoi eliminare la scheda di questo libro?", vbCritical + vbYesNo, "Sei sicuro?")
  21. If Opzione = 6 Then
  22.     Data1.Recordset.Delete
  23.     Data1.Recordset.MoveNext
  24.     If Data1.Recordset.EOF Then
  25.     Data1.Recordset.MoveLast
  26.     End If
  27. End If
  28. End Sub
  29.  
  30. Private Sub cmdesci_Click()
  31. Unload Me
  32. End Sub
  33.  
  34. Private Sub cmdricerca_Click()
  35. Dim segnaposto As String
  36. Dim ricercaparola As String
  37. segnaposto = Data1.Recordset.Bookmark
  38. ricercaparola = InputBox("Quale libro vuoi cercare?")
  39. If ricercaparola = "" Then Exit Sub
  40.  
  41. criterioricerca = "titolo = '" + ricercaparola + "'"
  42. Data1.Recordset.FindFirst criterioricerca
  43.  
  44. If Data1.Recordset.NoMatch Then
  45.     MsgBox ("Il titolo '" + ricercaparola + "' non esiste nel database.")
  46. End If
  47. End Sub
  48.  
  49. Private Sub Data1_Reposition()
  50. Frame2.Caption = "Scheda " + Str((Data1.Recordset.AbsolutePosition) + 1) + " /" + Str(Data1.Recordset.RecordCount)
  51. End Sub
  52.  
  53. Private Sub Form_Load()
  54. Data1.DatabaseName = App.Path & "\Listalibri.mdb"
  55. End Sub
  56.  
  57. Private Sub Cmdcaricaimmagine_Click()
  58. CommonDialog1.ShowOpen
  59. Image1.Picture = LoadPicture(CommonDialog1.FileName)
  60. Text12.text =CommonDialog1.FileName
  61. End Sub
  62.  
  63. Private Sub Image1_Click()
  64. if dir(Text12.Text) <> "" then
  65.   Image2.Picture = LoadPicture(Text12.Text)
  66. End if
  67. End Sub



Risolto questo intoppo posto anche il problema che ho relativo al salvataggio del testo di una textbox in un file di testo. :hail:

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 0:24
Venerdì, 31/07/2009
1) non sopporto l'uso di DAO nei programmi VB6. E' veramente obsoleto, poco supportato e crea non pochi problemi nei sistemi recenti ... sarebbe meglio utilizzare sempre ADO nella versione piu' recente ...

2) non sopporto l'uso di controlli (Data per DAO ma anche ADODC per ADO ...) ... e' sempre preferibile non usarli perche' sono fonte di bug e sono poco controllabili ... molto meglio utilizzare il "modello ad oggetti" e istanziare quello che serve, dove serve (connection, recordset, command ...)

Fatte le due premesse, non capisco il tuo problema, sebbene tu abbia scritto parecchio ... Come farei personalmente ... tieni tutti i file in una cartella e prepara un campo di tipo testo per memorizzare il percorso nel db. Tutto qui.

PM Quote
Avatar
Swanny (Normal User)
Rookie


Messaggi: 25
Iscritto: 25/07/2009

Segnala al moderatore
Postato alle 2:19
Venerdì, 31/07/2009
1) sul manuale da cui sto leggendo, il primo esempio che fa per connettere un DB a VB è DAO (il manuale è abbastanza vecchio), quindi essendo il primo manuale da dove ho preso spunto ho trovato questo. Anche su internet i vari esempi di utilizzo del DB sono in DAO. Non potendo utilizzare la nuova versione di VB mi arrangio con questa purtroppo.

2) non saprei da dove cominciare per usare il modello ad oggetti...cmq tengo in considerazione le tue parole.

Premettendo che tutto il materiale necessario al programma l'ho inserito/salvato tutto nella stessa cartella del progetto. Il mio problema sta nel non saper salvare il percorso del file nel DB, ho fatto come descritto su da codice (provando anche a togliere la stringa di form load) ma ogni volta che premo il pulsante aggiungi mi compare l'errore
Errore di run-time "3426"
Azione eliminata da un oggetto associato

evidenziandomi la seguente stringa

Codice sorgente - presumibilmente Plain Text

  1. Data1.Recordset.AddNew



Che senza effettuare questa nuova operazione funziona per bene.


Poi per il fatto del salvataggio su file di testo (che non ho specificato prima) di un campo non capisco cosa succede...se creo un form nuovo con una casella di testo e un pulsante con questo codice:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub cmdaggiungi_Click()
  2. Open App.Path & "\Listatxt.txt" For Output As #1
  3. Print #1, text1.text
  4. Close #1
  5. end sub



Tutto va bene e mi salva il contenuto, se invece applico la stessa cosa al mio progetto (per salvare la lista di tutti i libri, pronta alla stampa) mi da: errore di compilazione; impossibile trovare il metodo o il membro dei dati.
Sottolineandomi l'estensione .text


PS: Mi spiace aver fatto "alterare" theprogrammer con il mio metodo di lavoro/programmazione, se lo si ritiene opportuno potete chiudere il topic, purtroppo mezzi e conoscenze sono molto bassi nel mio caso.:(

Ultima modifica effettuata da Swanny il 31/07/2009 alle 2:20
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 10:08
Venerdì, 31/07/2009
Testo quotato

Postato originariamente da Swanny:

1) sul manuale da cui sto leggendo, il primo esempio che fa per connettere un DB a VB è DAO (il manuale è abbastanza vecchio), quindi essendo il primo manuale da dove ho preso spunto ho trovato questo. Anche su internet i vari esempi di utilizzo del DB sono in DAO. Non potendo utilizzare la nuova versione di VB mi arrangio con questa purtroppo.



Non esiste una nuova versione o una vecchia version di VB6. Tu puoi usare sia DAO che ADO. Ma quest'ultima libreria e' preferibile. Devi avere installato il SP6 (in ogni caso) e seguire un manuale piu' aggiornato. Non c'e' giustificazione.

Testo quotato

2) non saprei da dove cominciare per usare il modello ad oggetti...cmq tengo in considerazione le tue parole.



Testo quotato

Premettendo che tutto il materiale necessario al programma l'ho inserito/salvato tutto nella stessa cartella del progetto. Il mio problema sta nel non saper salvare il percorso del file nel DB, ho fatto come descritto su da codice (provando anche a togliere la stringa di form load) ma ogni volta che premo il pulsante aggiungi mi compare l'errore
Errore di run-time "3426"
Azione eliminata da un oggetto associato



Questi sono i problemi creati dai controlli Data di cui ti parlavo. Non li usare.

Testo quotato

Poi per il fatto del salvataggio su file di testo


Tutto va bene e mi salva il contenuto, se invece applico la stessa cosa al mio progetto (per salvare la lista di tutti i libri, pronta alla stampa) mi da: errore di compilazione; impossibile trovare il metodo o il membro dei dati.
Sottolineandomi l'estensione .text



Non l'ho capito ... tu quale codice usi? Hai inserito il textbox sul form? O no?

Testo quotato

PS: Mi spiace aver fatto "alterare" theprogrammer



Ma non dire sciocchezze ... non mi altero ma ti indico solo di non perdere tempo e seguire la strada corretta ... se vuoi ...

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 10:30
Venerdì, 31/07/2009
Testo quotato

Postato originariamente da Swanny:
PS: Mi spiace aver fatto "alterare" theprogrammer con il mio metodo di lavoro/programmazione, se lo si ritiene opportuno potete chiudere il topic, purtroppo mezzi e conoscenze sono molto bassi nel mio caso.:(



LoL

Guarda che ti ha dato solo un consiglio, è stato un pò "severo" per fartelo entrare ben in testa :asd:

PM Quote
Avatar
Swanny (Normal User)
Rookie


Messaggi: 25
Iscritto: 25/07/2009

Segnala al moderatore
Postato alle 13:37
Venerdì, 31/07/2009
Per nuova versione di VB intendevo la visual studio 2008 che ho provato ma con il mio pc non la posso sfruttare al meglio. Avevo provato ad utilizzare ADO come mi avevi consiglato nel topic precedente solo che non mi riconosceva le stringhe di codice, forse per il fatto di non aver installato il SP6? Non so se tutt'ora l'ho ma d'ho un occhiata e in caso lo scarico e lo installo.
Se pensi che l'errore del salvataggio sul DB sia dato dal fatto che uso il controllo DATA allora provo ad usare ADO con ADODC (prima vediamo come funziona rispetto a DAO)

Per il file di testo, si inserisco la textbox nel form, ho dimenticato a scrivere il codice dopo aver editato il messaggio. Allora quello che scrivo sul pulsante come detto prima è:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub cmdaggiungi_Click()
  2. Open App.Path & "\Listatxt.txt" For Output As #1
  3. Print #1, text1.text
  4. Close #1
  5. End Sub



Quello sulla casella di testo che in teoria dovrebbe far in modo che al click sul controllo Image venga caricata l immagine è il seguente:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Image2_Click()
  2. if dir(Text12.Text) <> "" then
  3.   Image2.Picture = LoadPicture(Text12.Text)
  4. End if
  5. End sub




PM Quote
Avatar
XBarboX (Member)
Guru


Messaggi: 945
Iscritto: 31/12/2008

Segnala al moderatore
Postato alle 15:14
Venerdì, 31/07/2009
Usa direttamente Access, viene meglio.

PM Quote
Avatar
Swanny (Normal User)
Rookie


Messaggi: 25
Iscritto: 25/07/2009

Segnala al moderatore
Postato alle 21:16
Sabato, 01/08/2009
Testo quotato

Postato originariamente da XBarboX:

Usa direttamente Access, viene meglio.



L'idea mia era venuta in mente ma in questo modo dovrei avere sempre access installato. Mi piaceva di + l'idea di un programma da poter usare dovunque e da distribuire anche ai miei colleghi appassionati di libri come me :k:

Per adesso son fermo con il lavoro aspettando qualche risposta ;)

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 21:34
Sabato, 01/08/2009
Non devi avere Access installato. Devi solo avere installate le librerie per la gestione dei file mdb (e normalmente ci sono nei SO recenti).

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo