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 - Spostare DB e salvataggio txt
Forum - Visual Basic 6 - Spostare DB e salvataggio txt

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


Messaggi: 25
Iscritto: 25/07/2009

Segnala al moderatore
Postato alle 16:23
Sabato, 25/07/2009
Questo topic è stato chiuso dal moderatore

Buongiorno a tutti, sono nuovo nel forum e del linguaggio di programmazione in VB. Vi parlo da autodidatta che sta cercando di imparare qualcosa su questo linguaggio (ho acquistato un manuale di programmazione in VB6 da cui sto cercando di imparare qualcosa), purtroppo non posso usare il più aggiornato VB.NET date le scarse qualità del mio PC. Vi espongo il problema...sto cercando di creare un database dove catalogare i numerosi libri che possiedo e per far ciò ho creato un database in access (lista.mdb) convertendolo in versione95 (la versione 2003 non era supportata da VB6) con una tabella (lista) e 3 campi:
1. Titolo --> Testo
2. Anno --> Testo
3. Promo_Trama --> Memo

Poi un form in VB6 con l'interfaccia composta da 3 textbox, 3 label, 3 bottoni, 1 controllo data, 1 commondialog:
TextBox: txttitolo, txtanno, txttrama;
Label: lbltitolo, lblanno, lbltrama;
Bottoni: cmdsalva, cmdelimina, cmdesci.
Data: data1
Commondialog: CommonDialog1

Sono riuscito a collegare il DB al form tramite il controllo DATA1 e le sue proprietà DATABASENAME e RECORDSOURCE, e cercando su google ad effettuare la funzione salva ed elimina.
SALVA:
Private Sub cmdsalva_Click()
  Data1.Recordset.AddNew
End Sub

ELIMINA:
Private Sub cmdelimina_Click()
  Data1.Recordset.Delete
  Data1.Recordset.MoveNext
End Sub

Alla fine ho creato il progetto in exe tramite il menù File->Crea progetto.exe

Ho messo il database e l'exe in una cartella e l'ho spostato da desktop a documenti così da metterlo da parte. Però appena lanciato l'exe non mi riesce di salvare il contenuto nel db poichè ho spostato tutto dalla sua posizione originaria, c'è un modo per far si che dopo lo spostamento e la creazione dell'exe il programma funzioni ugualmente?

Info: mi hanno fatto vedere un metodo + semplice per la creazione del db tramite il visual data manager di VB6, sembra si tutto automatico, solo che con questa procedura non riesco a salvare in un file di testo il contenuto di una determinata textbox, per farlo dovrei usare:
Private Sub cmdsalvatxt_Click()
Open "percorso\fileprova.txt" For Output As #1
Print #1, txttitolo.text
Close #1
End Sub

solo che in fase di debug mi da questo errore: impossibile trovare il metodo o il membro dei dati, evidenziandomi la dicitura .text alla riga prin#1. che dovrei fa?


Spero di non pretendere troppo, grazie a chi saprà aiutarmi.
:k:

PM
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 17:27
Sabato, 25/07/2009
Testo quotato

Postato originariamente da Swanny:

Buongiorno a tutti, sono nuovo nel forum e del linguaggio di programmazione in VB. Vi parlo da autodidatta che sta cercando di imparare qualcosa su questo linguaggio (ho acquistato un manuale di programmazione in VB6 da cui sto cercando di imparare qualcosa), purtroppo non posso usare il più aggiornato VB.NET date le scarse qualità del mio PC. Vi espongo il problema...sto cercando di creare un database dove catalogare i numerosi libri che possiedo e per far ciò ho creato un database in access (lista.mdb) convertendolo in versione95 (la versione 2003 non era supportata da VB6) con una tabella (lista) e 3 campi:
1. Titolo --> Testo
2. Anno --> Testo
3. Promo_Trama --> Memo

Poi un form in VB6 con l'interfaccia composta da 3 textbox, 3 label, 3 bottoni, 1 controllo data, 1 commondialog:
TextBox: txttitolo, txtanno, txttrama;
Label: lbltitolo, lblanno, lbltrama;
Bottoni: cmdsalva, cmdelimina, cmdesci.
Data: data1
Commondialog: CommonDialog1

Sono riuscito a collegare il DB al form tramite il controllo DATA1 e le sue proprietà DATABASENAME e RECORDSOURCE, e cercando su google ad effettuare la funzione salva ed elimina.
SALVA:
Private Sub cmdsalva_Click()
  Data1.Recordset.AddNew
End Sub

ELIMINA:
Private Sub cmdelimina_Click()
  Data1.Recordset.Delete
  Data1.Recordset.MoveNext
End Sub

Alla fine ho creato il progetto in exe tramite il menù File->Crea progetto.exe

Ho messo il database e l'exe in una cartella e l'ho spostato da desktop a documenti così da metterlo da parte. Però appena lanciato l'exe non mi riesce di salvare il contenuto nel db poichè ho spostato tutto dalla sua posizione originaria, c'è un modo per far si che dopo lo spostamento e la creazione dell'exe il programma funzioni ugualmente?


Che errore ti da? che riga ti segna vb? mostra il codice che hai usato...

Testo quotato


Info: mi hanno fatto vedere un metodo + semplice per la creazione del db tramite il visual data manager di VB6, sembra si tutto automatico, solo che con questa procedura non riesco a salvare in un file di testo il contenuto di una determinata textbox, per farlo dovrei usare:
Private Sub cmdsalvatxt_Click()
Open "percorso\fileprova.txt" For Output As #1
Print #1, txttitolo.text
Close #1
End Sub

solo che in fase di debug mi da questo errore: impossibile trovare il metodo o il membro dei dati, evidenziandomi la dicitura .text alla riga prin#1. che dovrei fa?


Spero di non pretendere troppo, grazie a chi saprà aiutarmi.
:k:



Non ho capito bene che centra visual data manager
:-|

PM
Avatar
Swanny (Normal User)
Rookie


Messaggi: 25
Iscritto: 25/07/2009

Segnala al moderatore
Postato alle 3:04
Domenica, 26/07/2009
Testo quotato

Postato originariamente da GrG:
Che errore ti da? che riga ti segna vb? mostra il codice che hai usato...


L'errore che mi da quando avvio il programma è il seguente:
Data error event hit err:'Mio percorso del file' non è un percorso valido. Assicurarsi che il nome del percorso sia corretto e di essere collegati al server in cui si trova il file.

Poi premendo ok si avvia il programma ma appena tento di salvare ottengo questo errore:
Run-time error '91':
Object variable or With block variable not set.

Premendo ok il programma si chiude.

Testo quotato


Non ho capito bene che centra visual data manager
:-|



Praticamente è un procedimento + semplice che mi hanno spiegato per creare un form collegato al database, in quanto mi crea automaticamente il form già disposto con tutti i campi aggiunti nella tabella.

PM
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 10:11
Domenica, 26/07/2009
non sono pratico nel gestire db da vb6 ma visto che sbagli il percorso in qualche parte di codice credo che tu abbia messo una cosa del tipo (in pseudocodice):

apri "C:\percorso\tuofile"

quindi a percorso fisso, e se viene spostato quel file dalla sua cartella poi è normale che dia errore...

mostra il codice che usi per una miglior chiarezza...

PM
Avatar
Swanny (Normal User)
Rookie


Messaggi: 25
Iscritto: 25/07/2009

Segnala al moderatore
Postato alle 11:01
Domenica, 26/07/2009
Questo è il codice del programma:

Private Sub cmdaggiorna_Click()
  Data1.Refresh
End Sub

Private Sub cmdsalva_Click()
  Data1.Recordset.AddNew
End Sub

Private Sub cmdcarica_Click()
  Data1.UpdateRecord
  Data1.Recordset.Bookmark = Data1.Recordset.LastModified
End Sub

Private Sub cmdelimina_Click()
  Data1.Recordset.Delete
  Data1.Recordset.MoveNext
End Sub

Private Sub cmdesci_Click()
  Unload Me
End Sub

Private Sub Data1_Error(DataErr As Integer, Response As Integer)
  MsgBox "Data error event hit err:" & Error$(DataErr)
  Response = 0
End Sub

Private Sub Data1_Reposition()
  Screen.MousePointer = vbDefault
  On Error Resume Next
  Data1.Caption = "Record: " & (Data1.Recordset.AbsolutePosition + 1)
  Data1.Caption = "Record: " & (Data1.Recordset.RecordCount * (Data1.Recordset.PercentPosition * 0.01)) + 1
End Sub

Private Sub Data1_Validate(Action As Integer, Save As Integer)
  Select Case Action
    Case vbDataActionMoveFirst
    Case vbDataActionMovePrevious
    Case vbDataActionMoveNext
    Case vbDataActionMoveLast
    Case vbDataActionAddNew
    Case vbDataActionUpdate
    Case vbDataActionDelete
    Case vbDataActionFind
    Case vbDataActionBookmark
    Case vbDataActionClose
  End Select
  Screen.MousePointer = vbHourglass
End Sub
Private Sub mnuaggiungi_Click()
  Data1.Recordset.AddNew
End Sub

Private Sub mnuedita_Click()
  Data1.Refresh
End Sub

Private Sub mnucarica_Click()
  Data1.UpdateRecord
  Data1.Recordset.Bookmark = Data1.Recordset.LastModified
End Sub

Private Sub mnuelimina_Click()
  Data1.Recordset.Delete
  Data1.Recordset.MoveNext
End Sub

Private Sub mnuesci_Click()
End
End Sub

Private Sub mnuinformazioni_Click()
frminformazioni.Show
End Sub


L'uniche parti dove inserisco il percorso del file è nella proprietà del controllo data alla voce DatabaseName: dove indico il percorso del database quando è posizionato originariamente sul desktop.

Se può essere più utile allego il programma in zip non so :pat:

PM
Avatar
Swanny (Normal User)
Rookie


Messaggi: 25
Iscritto: 25/07/2009

Segnala al moderatore
Postato alle 1:09
Mercoledì, 29/07/2009
Ragazzi, ho provato a creare il file di installazione del programma tramite il tool di VB "Creazione guidata pacchetti di installazione", pensando che il problema potesse essere risolto invece niente. Ho provato anche ad inserire nel form load il seguente codice App.Path & "\miodb.mdb" e ho ricreato il file di installazione ma niente...vorrei sapere in fin dei conti se è possibile creare questo programma in modo che il controllo DATA funzioni anche se dovessi installare il programma su un altro PC e quindi avvenga la normale procedura di salvataggio dei dati nel database.

PM
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 7:26
Mercoledì, 29/07/2009
L'oggetto Data dispone di una proprietà che si chiama

DatabaseName

Se hai inserito il percorso del file in quella proprietà dall'IDE, il db sarà sempre cercato in quella posizione.

Quindi, dovrai eliminare qualsiasi valore da questa proprietà e assegnarla a runtime, nella Form_Load sfruttando la App.Path per indicare il percorso completo di nome di file.

P.S. Sia il controllo Data, sia DAO utilizzato dal controllo, sia il tool di creazione di pacchetti di installazione del VB6 sono obsoleti e danno parecchi problemi su sistemi di nuova generazione. Dovresti, almeno, usare ADO e un software di installazione gratuita piu' recente come InnoSetup o CyberInstaller.

PM
Avatar
Swanny (Normal User)
Rookie


Messaggi: 25
Iscritto: 25/07/2009

Segnala al moderatore
Postato alle 11:43
Mercoledì, 29/07/2009
Ciao, grazie per aver risposto.

Allora come hai consigliato tu ho eliminato il percorso dalla voce DatabaseName di DATA1 e nel form load ho inserito questo:

Private Sub Form_Load()
Data1.DatabaseName = App.Path & "C:\Documents and Settings\Utente\Desktop\Archivio\listabook.mdb"
Data1.RecordSource = "Archivio"
End Sub

Spero funzioni (non so ma non mi convince)

Poi ho scaricato InnoSetup, sembra ottimo dalla descrizione, ora cerco una guida su come utilizzarlo per creare il pacchetto di installazione.

Sto provando ad usare il controllo ADODC di ADO al posto del DATA di DAO.

PM
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 11:55
Mercoledì, 29/07/2009
Testo quotato

Postato originariamente da Swanny:
Private Sub Form_Load()
Data1.DatabaseName = App.Path & "C:\Documents and Settings\Utente\Desktop\Archivio\listabook.mdb"
Data1.RecordSource = "Archivio"
End Sub



Non mi sembra molto corretto :asd:

app.path restituisce il percorso in cui si trova il programma e invece dopo gli dai il path completo... Se il database si trova nella stessa cartella metti:

Data1.DatabaseName = App.Path & "\listabook.mdb"

PM
Pagine: [ 1 2 ] Precedente | Prossimo