Il programma maledetto con VB6 e ADODC

di il
15 risposte

Il programma maledetto con VB6 e ADODC

Salve a tutti
sono un ragazzo diplomato come perito commerciale e programmatore, visto che il mio prof (matusa) mi ha insegnato come unico linguaggio il Cobol (con ACU BENCH) ho deciso di dedicarmi all'apprendimento fai da te di VB.
lo trovo un linguaggio estremamente semplice, una volta abituatisi alla rpogrammazione ad aggetti però mi risulta difficile la gestione dei database (i file indexed a quanto o capito nn esistono in vb).
dopo essermi studiato anche SQL sono riuscito a fare un programma che mi serve per lavoro.
però mi sono trovato bloccato in un bug vche sinceramente nn so come risolvere.....

il problema è il seguente, devo eliminare un record da un db, pèer questo caso specifico invecie della solita query ho deciso di adottare un metodo alternativo.

in pratica ho impostato la form in modo di fare una ricerca tramite una databox collegata alla tabella

il problema è che anche se nel database (monitorato in fase di test passo a passo con access) il record viene effettivamente eliminato nelle form continua a comparire causando un bug dietro l'altro

premetto che per evitare errori ho impostati una marea di refresh su tutti gli oggetti che hanno a che fare con i database sia subito dopo la cencellazione, sia all'activate di qualsiasi form.

Vi prego HEEEEELP!!!

PS: il programma in questione è mio personale e nn è soggetto a nessun tipo di diritto (d'autore, di proprietà ecc) quindi qualunque anima buona che volesse aiutarmi avrà la mia massima disponibilità per l'invio di tutto o di parte del codice sorgente (oltre alla mia eterna gratitudine ovvio)

15 Risposte

  • Re: Il programma maledetto con VB6 e ADODC

    Te fai:

    Delete * FROM tabella WHERE camporecord=valoretextbox

    giusto?
  • Re: Il programma maledetto con VB6 e ADODC

    Questa è la sintassi esatta che uso nel progetto


    Private Sub cmdOk_Click()
    sql = \"delete from clienti where clienti.clicod='\" & dboxNome.Text & \"'\"
    cnn.Execute sql
    MsgBox \"cliente eliminato \"
    Adodc1.Refresh
    dboxNome.Refresh

    LEGENDA:
    dbox nome = la databox che contiene la lista dei nomi dei clienti
    (clicod)
    sql = variabile string
    clienti =nome della tabella (in sql)
    clicod = nome del campo che contiene i nomi dei clienti
    adodc1 = oggetto adodc usato per una textbox nella form
  • Re: Il programma maledetto con VB6 e ADODC

    Ps. vista la tua sintassi ho provveduto già a correggere l'errore dell'asterisco ed a fare il debug ma nn funziona lo stesso
  • Re: Il programma maledetto con VB6 e ADODC

    Prova a mettere il ; alla fine dell'istruzione sql...

    sql = \"delete from clienti where clienti.clicod='\" & dboxNome.Text & \"';\"

    Saluti...
  • Re: Il programma maledetto con VB6 e ADODC

    sql = \"delete from clienti where clienti.clicod='\" & dboxNome.Text & \"';\"
    Forse c'è un apice di troppo :
    il campo codice cliente penso sia un intero e non deve andare tra apici.

    sql = \"delete from clienti where clienti.clicod=\" & dboxNome.Text & \";\"

    Penso che se aggiungessi un controllo dell'errore, ti darebbe pure errore.
  • Re: Il programma maledetto con VB6 e ADODC

    Non credo l'errore cmq sia nella sintassi del delete, poichè ha detto che monitorando il database il record viene effettivamente eliminato.

    La connessione al database la fai al load del form? E la chiudi nell'exit?
    O la fai per ogni azione?
  • Re: Il programma maledetto con VB6 e ADODC

    Prova a fare così.. nn ne sono sicuro.. ma potrebbe funzionare:

    dopo che hai eseguito la query.. prima di fare il refresh.. portati al primo record della tua tabella (utilizzando il metodo first).. in modo da toglierti dal record che hai appena eliminato..

    ps. se vuoi eliminare il primo record ad es spostati all'ultimo.. se funziona.. poi cerchiamo di trovare una soluzione giusta per risolvere il tuo problema..

    Saluti...
  • Re: Il programma maledetto con VB6 e ADODC

    Niente da fare nn ne vuole sapere di funzionare neppure con il ;
    però oggi mentre ero in giro mi è venuta un'idea:

    se invecie dei databox usassi delle textbox o delle label magari creando un tasto con collegamento ad un altra form con un elenco totale dei clienti (in una grid)

    così magari aggiro il problema

    anche se sinceramente la soluzione delle databox mi piaceva di +

    se vi viene in mente qualcosa riguardo alle databox bene io vi farò sapere qualcosa se risolvo con le grid

    Per ora grazie dell'aiuto
  • Re: Il programma maledetto con VB6 e ADODC

    Intel ha scritto:


    prova a fare così.. nn ne sono sicuro.. ma potrebbe funzionare:

    dopo che hai eseguito la query.. prima di fare il refresh.. portati al primo record della tua tabella (utilizzando il metodo first).. in modo da toglierti dal record che hai appena eliminato..

    ps. se vuoi eliminare il primo record ad es spostati all'ultimo.. se funziona.. poi cerchiamo di trovare una soluzione giusta per risolvere il tuo problema..

    Saluti...
    il problema è che se l'oggeto adodc ha il metodo movefirst la cosa nn vale con l'oggetto databox che poi è quello che crea i problemi cmq proverò lo stesso
  • Re: Il programma maledetto con VB6 e ADODC

    Dunque ragazzi
    c sono dei miglioramenti
    ho sostituito le dbox con della label che vengono modificate scegliendo i valori in una datagrid in un altra form
    e ho cambiato il sistema dei refresh, invecie di metterne uno in ogni form activate li ho messi tutti insieme (tutti gli oggetti adodc di tutte le form) subito dopo la modifica al database (insert, update, delete):

    risultato funziona tutto!!! o meglio quasi, infatti per quanto riguarda il programma va tutto e da ogni form le modifiche vengono rilevate senza problemi, però nn riesco ad aggiornare i data report perchè fanno capo al data environment senza passare per gli adodc

    ho provato anche a fare datareport.refresh insieme ai refresh degli adodc però la cosa nn cambia

    qualsiasi proposta/idea è ben accetta
    grazie a tutti
  • Re: Il programma maledetto con VB6 e ADODC

    Altra info

    penso di essere ad un passo dalla soluzione del problema report:
    nn ho trovato la soluzione al problema ma ho notato una cosa importante

    le voci datarep.refresh funzionano però solo la prima volta quindi sospetto che il problema nn sia l'apertura del datarep ma bensì la chiusura infatti la prima volta che viene richiamato il datarep è aggiornato ma se si chiude e si richiama ecco che gli aggiornamenti nn vengono fatti questo secondo me succede perchè quando chiudo il datarep uso la X di windows che evidentemente nn chiude bene la form però con i controlli a mia disposizione nn posso fare altrimenti (infatti nn mi risulta che esista un oggetto button o command nei report)

    qualcuno ha qualche idea?
  • Re: Il programma maledetto con VB6 e ADODC

    Niente da fare
    credo che il titolo che ho dato a questa discussione sia senza dubbio azzeccato

    questo maledetto programma nn ne vuole proprio sapere di partire.

    dunque, il problema relativo ai report ho rinunciato a risolverlo e l'ho aggirato creando un programmino che si dedica solo a quello e dopo un veloce debug sono riuscito a finire la progettazione ed ho compilato gli exe.

    sul mio pc funziona tutto a meraviglia come anche sul pc di un mio amico a cui ho inviato il software per fargli fare un test, però sul mio portatile nn ne vuole proprio sapere.

    prima segnalava un errore relativo alla mancanza del file MSADODC.OCX
    ho cercato in internet ed ho installato il controllo activex.
    tutto ok? certo che no! ora da il seguente errore:
    \"Run-time error '13' Type mismatch\"
    essendo il programma sviluppato appoggiandosi ad access ho deciso di installare access anche sul portatile (access XP per la cronaca, la stessa versione che ho utilizzato per fare il programma) e per essere + sicuro dopo averlo installato ho anhe riavviato
    quindi ho lanciato il programma ma niente da fare continua imperterrito a dare quell'errore
    ho cercato in internet ma nn ho trovato descrizioni soddisfacenti
    qualcuno c capisce qualcosa???? heeeeelp!!!
  • Re: Il programma maledetto con VB6 e ADODC

    Sul portatile hai installato le runtime di VB6? Sicuramente ti manca qualche OCX. Per la distribuzioni di applicazioni, in VB6 NON basta copiare l'eseguibile (come in C).

    Per distribuire applicazioni, esiste un utility (Package & Deployment Wizard), la trovi con VB, che ti crea il setup con tutti i file necessari.

    Un altra cosa, non e' necessario installare access per poter accedere al database dal tuo programma.

    Se ti interessa, ti posso spedire un progetto di esempio in VB6. Non utilizza ADODC (il controllo ocx) ma solamente le librerie.

    Spero di esserti stato d'aiuto.
  • Re: Il programma maledetto con VB6 e ADODC

    Credo che le tue osservazioni mi saranno estremamente di aiuto

    proverò a creare un setup come mi hai detto di fare ma per quanto riguarda vb runtime nn so come fare ad installarle sul portatile
    cmq proverò a vedere cosa posso fare.

    per il progetto grazie ma nn credo che mi serva nn utilizzando adodc
Devi accedere o registrarti per scrivere nel forum
15 risposte