Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    vb6 - Record count che non capisco - Ovviare problemi di piu' funzioni

    Scusate in un mio programma faccio fare un msgbox con rs.recordcount
    Mi da come risultato -1
    Non è alquanto strano?

    Per quanto riguarda l'altra domanda
    Ho fatto una sub in cui devono essere inseriti 3 parametri
    La funzione viene ripetuta per 30 volte una sotto l'altra, naturalmente con parametri diversi
    Ora se per esempio in 30 campi ne riempio solo 10, mi da errore.
    Se elimino gli altri 20 e ne faccio eseguire 10 non da niente, funziona.
    In pratica le sub di troppo non devono essere eseguite
    Come posso determinare se un campo è stato riempito o no e regolarmi di conseguenza sul fatto di eseguire la sub su quel determinato campo o no?
    Grazie

  2. #2
    chiaro quasi come il titolo
    cmq prima di chiedere il recordcount dai un movelast movefirst
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  3. #3
    Chiedo scusa per la poca chiarezza, spero di averlo sistemato a dovere

    Non posso fare il movefirst o last, poichè io procedo cosi
    L'utente inserisce il codice in codice.text
    quindi
    codice:
    ' cs e rs sono adodb.connection e recordset già collegati
    query = "Select quantita from prod where codice = '" & codice.text & "'"
    set rs = cs.execute(query)
    qta = rs.fields("quantita").value
    Sull'ultima riga mi da l'errore
    Se leggi il post sopra, l'errore è provocato quando non riempio tutti i textbox

  4. #4
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Originariamente inviato da XVincentX
    Chiedo scusa per la poca chiarezza, spero di averlo sistemato a dovere

    Non posso fare il movefirst o last, poichè io procedo cosi
    L'utente inserisce il codice in codice.text
    quindi
    codice:
    ' cs e rs sono adodb.connection e recordset già collegati
    query = "Select quantita from prod where codice = '" & codice.text & "'"
    set rs = cs.execute(query)
    if rs.recordcount>0 then 
         qta = rs.fields("quantita").value
    end if 
    Sull'ultima riga mi da l'errore
    Se leggi il post sopra, l'errore è provocato quando non riempio tutti i textbox
    ciao, fai le modifiche in rosso... per testare se il recordset è stato riempito, puoi usare anche questa sintassi:
    codice:
    if rs.eof and rs.bof then
    ...recordset vuoto
    else
    ...recordset pieno
    end if
    Jupy

  5. #5
    Oppre avevo pensato ad una sub cosi
    codice:
    sub controlla_campi(campo as textbox)
    if campo.text = "" then
    exit sub
    end sub
    Quindi la richiamo cosi

    codice:
    sub controlla_campi(text2)
    altre istruzioni
    Il problema è che il compilatore come exit sub intende la sub controlla campi, non quella del click!
    Cosi avevo pensato ad una funzione che restituisce un valore booleano, ma non so come funziona...
    se la funzione esegue tutto il codice correttamente, il valore diventa true?
    Altrimenti?
    Graize

  6. #6
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    allora per il tuo ultimo problema fai cosi:
    codice:
    private function controlla_campi(campo as textbox) as boolean
       if campo.text = "" then
          controlla_campi=false
       else
          controlla_campi=true
       end if
    end function
    
    if controlla_campi(text2) then
    ....fai quello che vuoi
    else
    ....esci dalla sub
    end if
    comunque sia, anche se decidi di adottare questo metodo (vale solo per controllare se nella textBox c'è qualcosa), il controlla sul recordset, per vedere se è popolato, ti conviene farlo sempre, onde evitare che qualcuno immetta un codice che non c'è nella tabella..
    ad esempio, mettiamo che io inserisca il codice AAA e nella tua tabella non esiste questo codice, quando fai la select otterrai un recordset vuoto e alla prima istruzione che farai (senza controllare se è pieno), tipo qta = rs.fields("quantita").value otterrai un errore.
    Jupy

  7. #7
    No, non mi serve fare il controll perchè il codice viene preso dal click su un datagrid (che prende il codice dal database)
    Continua però il mio problema, ti giuro che ieri sera cominciavo a perdere il lume della ragione...
    Adesso ti spiego.
    Io ho queste due funzioni
    codice:
    Sub scarica(quantita As TextBox, codice As TextBox)
    '   Funzione: Scarica dal magazzino i prodotti selezionati _
        Creato da:    Vincenzo Chianese, 2005 _
        Come funziona: Chiamare la funzione passando le solite _
        variabili. Tutto automatico
            Dim con As ADODB.Connection
            Dim res As ADODB.Recordset
    Const provi As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=fatture.mdb;Persist Security Info=False"
            Dim querydb As String
                Dim qtVecchio As Currency
                Dim qtNuovo As Currency
                Dim qtTotale As Currency
            Set con = New ADODB.Connection
            Set res = New ADODB.Recordset
    con.Open provi
    querydb = "Select * from anagprodotti where cod_prodotto = '" & codice.text & "'"
    Set res = con.Execute(querydb)
    MsgBox res.Fields("quantita_magazzino")
    qtVecchio = res.Fields("quantita_magazzino").Value
    qtNuovo = quantita.text
    qtTotale = qtVecchio - qtNuovo
    querydb = "Update anagprodotti set quantita_magazzino = " & qtTotale & " where cod_prodotto = '" & codice.text & "'"
    con.Execute querydb
    res.Close
    con.Close
    Set res = Nothing
    Set con = Nothing
    End Sub

    E quest'altra
    Il loro funzionamento è semplice
    codice:
    Private Function controlla_campi(campo As TextBox) As Boolean
    If campo.text = "" Then
    controlla_campi = False
    Else
    controlla_campi = True
    End If
    End Function
    Che mi hai dato tu
    Ecco come io le utilizzo
    codice:
            If controlla_campi(Text26) = True Then
    Call funzioni.scarica(Text46, Form4.codice2)
            End If
    In pratica se i campi sono vuoti non devi fare niente
    Cosi io ripeto l'istruzione + volte
    codice:
            If controlla_campi(Text26) = True Then
    Call funzioni.scarica(Text46, Form4.codice2)
            End If
            If controlla_campi(Text27) = True Then
    Call funzioni.scarica(Text47, Form4.codice2)
            End If
    Adesso se compilo solo il primo campo e gli altri li lascio vuoti va tutto ok, ma se viceversa ne compilo un altro e lascio il primo vuoto...argh va a farsi fottere dandomi un errore che il record è all'inizio o alla fine del file.
    Sembra proprio che funzioni solo il primo rigo!
    Sapete darmi una mano?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.