Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [VB6] Cliccare due volte per eseguire l'azione

    Ciao a tutti. Non riesco ad immaginarmi titolo diverso da quello che ho inserito che possa spiegare il mio problema.


    Come vedrete dal codice sotto,
    quando premo un tasto (cmdbutton) mi collego al db mySQL e faccio un while sulla tabella.
    Poi, verifico tramite l'if se l'ID di questa riga di db, corrisponde all'index premuto dal tasto.
    Se corrisponde visualizzo il frame corrispondente, altrimenti nascondo.

    Prima effettuavo la stessa cosa, facendo un ciclo for su un'array. Adesso che sto trasferendo le cose nel DB, mi si presenta il problema, che per far nascondere il frame devo premere il bottone 2 volte.

    Avete un'idea della causa?


    codice:
    Private Sub tastocat_Click(Index As Integer)
    
      Call do_connect: Set rs = CreateObject("ADODB.Recordset")
      If (conn.State = adStateOpen) Then
      query = "SELECT * FROM categorie": rs.Open query, conn:
      If rs.RecordCount > 0 Then
    
      Do While Not (rs.EOF) 
      a = rs("id")
      If a = Index Then
      framecat(a).Visible = True ' visualizzo il frame
      Else
      framecat(a).Visible = False 'nascondo il frame
      End If
      
      rs.MoveNext
      Loop: End If: End If: Set rs = Nothing: Call do_disconnect
    
    End Sub
    PIERCHI

  2. #2
    Potrebbe essere che devo premere due volte, perchè ogni volta che premo su questi tasti, faccio una connessione e disconnessione al DB?
    PIERCHI

  3. #3
    non capisco il giro: se hai 100 record ti ritrovi con una apertura e 99 chiusure! se devi solo aprire un frame corrispondente non ti conviene fare una ... WHERE id=index?

    spiegati meglio, grazie

  4. #4
    Quote Originariamente inviata da optime Visualizza il messaggio
    non capisco il giro: se hai 100 record ti ritrovi con una apertura e 99 chiusure! se devi solo aprire un frame corrispondente non ti conviene fare una ... WHERE id=index?

    spiegati meglio, grazie
    mi ritroverei con 100 aperture e chiusure di db, con 99 frame nascosti e 1 visibile.
    PIERCHI

  5. #5
    che risposta è? continuo a non capire cosa fa quel codice

  6. #6
    hai veramente tanti frame quanti sono i record della tabella?

  7. #7
    Quote Originariamente inviata da optime Visualizza il messaggio
    hai veramente tanti frame quanti sono i record della tabella?
    si certo.

    La tabella conterrà al massimo 15 righe.
    PIERCHI

  8. #8
    anche pensando di aprire la connessione al db, e ricavare qual'è l'ultimo valore del db in questa maniera

    codice:
      Call do_connect: Set rs = CreateObject("ADODB.Recordset")
      If (conn.State = adStateOpen) Then
      query = "SELECT * FROM categorie": rs.Open query, conn:
    For a = 1 To rs.RecordCount
        If a = Index Then
          framecat(a).Visible = True ' visualizzo il frame
        Else
          framecat(a).Visible = False 'nascondo il frame
        End If
    Next

    succede sempre che quando avvio il progetto e premo sui tasti, la prima pigiata non succede nulla. Poi ripremendo funziona, sia sul pulsante appena premuto che su altri.
    PIERCHI

  9. #9
    ok. la connessione al db andrebbe aperta una volta alla partenza del programma e chiusa una volta all'uscita.
    per i frame, fa' un ciclo for next che li chiuda tutti, poi apri solo quello che corrisponde, se esiste (... where id=index, check eof, poi apri frame (index))

  10. #10
    allora provvedo a cambiare metodo di connessione. Io l'ho aperta e chiusa ogni volta che dovevo interrogare il DB (cosa che in php non ho mai fatto. Chiudevo la connessione a fine pagina).

    Per i frame, come faccio a fare il for su tutti i frame se non conosco il numero finale dell'oggetto?
    PIERCHI

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.