Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 36
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    89

    query sql che non restituisce il dovuto

    Ciao a tutti. Ecco il problema:
    Ho un database Access che è composto dai seguenti campi:
    ID --> contatore
    IDTESSERA -->
    COGNOME --> testo
    NOME --> testo
    DATAISCRIZ -->
    ATTIVITAPRINCIPALE -->
    ATTIVITASECONDARIA -->
    MODALITAPAGAMENTO -->
    DATAULTIMOPAGAMENTO -->

    Tale db è suscettibile di modifiche, mi correggo, di aggiunte di nuove situazioni ( variazioni ) che riguardano ad esempio un socio già iscritto. Per cui, il socio ROSSI Mario, che aveva pagato la penultima retta mensile in OTTOBRE, ora la RINNOVA pagando la retta di Novembre. Nel far ciò, non aggiorno il vecchio record di ottobre, ma ne aggiungo uno nuovo ( con tutti i campi aventi medesimo valore di quello di ottobre, tranne che per la data di pagamento che sarà NOVEMBRE ). Aggiungo un nuovo record, e non sovrascrivo, per permettere all'utilizzare dell'applicativo di effettuare "lo storico" per mese, a ritroso. L'utilizzatore dell'applicativo, per verificare l'ultimo pagamento effettuato da ROSSI Mario interroga semplicemente il COGNOME ed ottiene il solo ultimo record inserito a nome di ROSSI MArio tessera nr.5 (Cioè quello dell'ultimo pagamento). Faccio questo mediante tale codice:

    Conn = 'Connessione al db
    strSQL = "SELECT * FROM last WHERE COGNOME = '" & strDigitato & "' ORDER BY ID ASC"
    Set RS = Server.CreateObject("ADODB.Recordset")
    RS.Open strSQL, Conn, 1, 3
    RS.MoveLast

    dove digitato è la variabile contenente la stringa-cognome digitata nella casella di testo ( input text recuperata con Request.Form ).

    E fin quì tutto bene. Il proble sorge quando esistono due persone che hanno lo stesso cognome, ma che evidentemente sono soggetti diversi, con un nome di battesimo diverso e soprattutto non un numero di TESSERA diverso. La query così fatta, mi continua a restituire solo l'ultimo record di uno solo dei due signor ROSSI esistenti. Ho provato a togliere RS.Movelast e ottengo come risultato tutti record ( ma proprio tutti, mentre a me serve solo l'ultimo ) di entrambi i signor Rossi. Dunque, a me occorre tirar fuori solo l'ulitmo record ( l'ultimo pagamento cioè ) di entrambi i signor Rossi, senza tutti gli altri record relativi ai mesi passati. Come faccio? Se reinserisco RS.Movelast, mi dà si l'ultimo record, ma solamente quello di uno dei due signor Rossi.
    Spero di essere stato chiaro e scusate il poema. Grazie dell'aiuto!

  2. #2
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    cerca nel forum la parola "identity".... se la ricerca funziona... :maLOL:

    no non funziona...

    cmq devi personalizzarti una query del genre:
    codice:
    strSQL = "SELECT @@identity FROM tbl where quello che ti pare...."
    Set objRS = Server.CreateObject("ADODB.Recordset")

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    89
    un aiutino in più?
    Credo che sbaglio qualcosa nella costruzione della SQL, ma proprio non riesco a capire cosa tralascio...
    Potresti darmi una mano mentre cerco nel forum identity? grazie!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    89
    la ricerca non funziona
    dunque, ti andrebbe di aiutarmi ad "aggiustare" la SQL?

  5. #5
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Originariamente inviato da giaffa
    la ricerca non funziona
    dunque, ti andrebbe di aiutarmi ad "aggiustare" la SQL?
    ti ho già risposto... guarda su

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    89
    scusami, non avevo visto il resto del tuo post. Ma cosa sono due chioccioline quelle che hai messo prima della parola identity?
    Quindi, perdonami, partendo dalla mia, come fa fatta la SQL? Grazie!

  7. #7
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Originariamente inviato da giaffa
    scusami, non avevo visto il resto del tuo post. Ma cosa sono due chioccioline quelle che hai messo prima della parola identity?
    Quindi, perdonami, partendo dalla mia, come fa fatta la SQL? Grazie!
    non l'ho provata quindi prendila con beneficio d'inventario...
    codice:
    strSQL = "SELECT @@identity FROM last WHERE COGNOME = '" & strDigitato & "' ORDER BY ID ASC" 
    Set RS = Server.CreateObject("ADODB.Recordset")
    questa query restituisce (almeno dovrebbe)l'ultimo dei records inseriti nel dbase.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    89
    pare che non va! Dunque? :master:

  9. #9
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Originariamente inviato da giaffa
    pare che non va! Dunque? :master:
    che vuol dire "che non va"?? errori? non restituisce nulla? posta il code.

  10. #10
    Mi sembra un problema che non è un problema..........se possono esistere più signori Rossi (come infatti possono) bisogna che la query estragga l'ultimo record corrispondente a QUEL signor Rossi..........perciò non basta specificare il cognome per recuperare il record.

    Ci vogliono informazioni a sufficienza per identificare il record in modo univoco (nome + cognome, data di nascita.... l'utente le deve inserire e la query deve specificarle)

    Estrarre l'ultimo Rossi in ordine di tempo non mi sembra una buona idea, perchè l'applicazione potrebbe avere bisogno di estrarre l'ultimo pagamento di un Rossi che non è il Rossi che ha pagato per ultimo...........


    :master:
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

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.