Vai a record specifico di maschera 1 da maschera 2

di il
19 risposte

Vai a record specifico di maschera 1 da maschera 2

Da una maschera 2 vorrei andare ad un record specifico della maschera 1 che è una maschera continua però ritorna sempre al primo record

Ecco parte del codice

sigla() = Split(Forms!maschera2.OpenArgs, "|")
Form_maschera1.Refresh
Forms("maschera1").Recordset.FindFirst "codice='" & codice(0) & "'"

19 Risposte

  • Re: Vai a record specifico di maschera 1 da maschera 2

    Quando avrai tempo e voglia di scrivere dettagliatamente cosa vuoi ottenere fornendo le informazioni complete di cosa hai provato forse potrai sperare di ottenere l'aiuto che cerchi.

    La parte del codice che hai mostrato è incompleta oltre che errata (o quantomeno con parte di codice non inerente il tuo problema : sigla() cosa rappresenta in questo contesto, codice(0) da dove arriva) ... vedi tu.
  • Re: Vai a record specifico di maschera 1 da maschera 2

    Diciamo che Max, è stato un SIGNORE...!

    Io lo sono meno, e quando vedo buttato li Codice dubbio... senza il senso del problema... chiuderei il 3D.
  • Re: Vai a record specifico di maschera 1 da maschera 2

    Scrivo con più calma.
    La maschera 2 la uso per modificare un singolo record cosa impossibile nelle maschere continue.

    come si vede dal codice sotto per risalire al codice/record appena modificato il codice del record si trova dopo | del Args quindi divido la stringa per recuperarla.
    Poi con Recordset.FindFirst vorrei andare alla maschera 1 del record con il codice
    codice() = Split(Forms!maschera2.OpenArgs, "|")
    Form_maschera1.Refresh
    Forms("maschera1").Recordset.FindFirst "codice='" & codice(0) & "'"
  • Re: Vai a record specifico di maschera 1 da maschera 2

    Luca.... forse hai pensato che le persone in questo forum siano al tuo servizio e ti debbano pure interpretare. Penso anche io che dovrebbero chiudere questo 3D
  • Re: Vai a record specifico di maschera 1 da maschera 2

    lucavalentino ha scritto:


    Scrivo con più calma.
    ...
    Rispondo con più calma, quel codice è completamente errato, devi usare la WHERE condition, ma questo argomento ti è già stato suggerito un'altra volta, e sembra che tu imperterrito... o sbaglio...?
  • Re: Vai a record specifico di maschera 1 da maschera 2

    codice() = Split(Forms!maschera2.OpenArgs, "|")
    Form_maschera1.Refresh
    Forms("maschera1").Recordset.FindFirst "codice='" & codice(0) & "'"
    Non lo dico per fare lo spiritoso.
    Ma qualcuno mi saprebbe spiegare che cosa farebbe (se funzionasse) un codice del genere?

    Lucavalentino, sul database di esempio northwind cìè quello che ti occorre per fare quello che ti occorre.

    Sul northwind, viene fatto con le macro. Ma se guardi come fanno, e lo vuoi fare con il vb, il concetto logico da seguire è lo stesso.
    Secondo me più che un problema di mancanza di conoscenza di come scrivere il codice, hai proprio problemi nell'approccio logico su come realizzare quello che ti occorre.
  • Re: Vai a record specifico di maschera 1 da maschera 2

    fratac ha scritto:


    codice() = Split(Forms!maschera2.OpenArgs, "|")
    Form_maschera1.Refresh
    Forms("maschera1").Recordset.FindFirst "codice='" & codice(0) & "'"
    Non lo dico per fare lo spiritoso.
    Ma qualcuno mi saprebbe spiegare che cosa farebbe (se funzionasse) un codice del genere?
    Probabilmente ha una stringa composta da Separatore che contiene dei Valori di parametri, fa lo SPLIT e prende quello di Indice (0) che corrisponde al Codice, quindi nella Maschera già Aperta, sposta il Record sul Criterio composto.
    Per funzionare il linea di principio può funzionare... ma è sicuramente uno dei modi migliori per generare confusione... intendo come METODO.
  • Re: Vai a record specifico di maschera 1 da maschera 2

    @Alex ha scritto:


    fratac ha scritto:


    codice() = Split(Forms!maschera2.OpenArgs, "|")
    Form_maschera1.Refresh
    Forms("maschera1").Recordset.FindFirst "codice='" & codice(0) & "'"
    Non lo dico per fare lo spiritoso.
    Ma qualcuno mi saprebbe spiegare che cosa farebbe (se funzionasse) un codice del genere?
    Probabilmente ha una stringa composta da Separatore che contiene dei Valori di parametri, fa lo SPLIT e prende quello di Indice (0) che corrisponde al Codice, quindi nella Maschera già Aperta, sposta il Record sul Criterio composto.
    Per funzionare il linea di principio può funzionare... ma è sicuramente uno dei modi migliori per generare confusione... intendo come METODO.
    Quindi avevo immaginato giusto.
    Però la cosa mi stride e non poco, visto che non è usuale un approccio del genere al problema.
    Chi è in grado di scrivere un codice del genere, (non è complicato, ma sicuramente non alla portata di chi chiede come aprire un record con una combo box) solitamente non incorre in problemi basici, come quelli che ha chiesto fino ad ora. O comunque non si rivolge ad un forum, ma sa dove cercare la documentazione (che comunque già gli è stata fornita).
    Quindi a che gioco stiamo giocando.
    E me lo chiedo ogni volta che non risponde alle domande, ogni volta che lascia i post in sospeso senza dire se ha risolto il problema e sopratutto quando magicamente i problemi gli spariscono, così dal nulla, o peggio quando posta la soluzione che ha adottato, che non ha niente a che fare con quello che ha chiesto.
  • Re: Vai a record specifico di maschera 1 da maschera 2

    Non è detto che chi pubblica codice abbia metabolizzato tecnicamente il contenuto... magari viene copiato da altre parti con contesti tecnici differenti ma non compresi e poi non funziona...
  • Re: Vai a record specifico di maschera 1 da maschera 2

    @Alex ha scritto:


    Non è detto che chi pubblica codice abbia metabolizzato tecnicamente il contenuto... magari viene copiato da altre parti con contesti tecnici differenti ma non compresi e poi non funziona...
    Si. L ho so. Capita un po a tutti.
    Ma è la perseveranza che mi preoccupa.
  • Re: Vai a record specifico di maschera 1 da maschera 2

    Quello che volevo fare è modificare un singolo record di una maschera continua con le combobox.

    So che nelle maschere continue non si può modificare il singolo record perciò ho fatto in questo:

    Dalla maschera 1 da un pulsante apro la maschera 2 dove il record è Me.Codice
    DoCmd.OpenForm "Maschera2", acNormal, , , acReadOnly, , "due|" & Me.CODICE
    
    Uso "due|" & Me.CODICE per usare la stessa maschera 2 con altre maschere.

    Dopo le dovute modifiche poi chiudo maschera 1 e maschera 2 e in maschera 2 faccio riaprire maschera 1 con args
    codice() = Split(Forms!maschera2.OpenArgs, "|")
    DoCmd.OpenForm "frmCorsiSeminariTutti", acNormal, , , acReadOnly, , codice(1)
    
    Infine riapro la maschera 1 e vado al record appena modificato
    Private Sub Form_open(Cancel As Integer)
    Dim codice As String
    If Not IsNull(Forms!frmCorsiSeminariTutti.OpenArgs) Then
    Me.Requery
    Me.Refresh
    codice= Forms!maschera1.OpenArgs
    Me.Recordset.FindFirst "codice='" & codice & "'"
    End If
    
  • Re: Vai a record specifico di maschera 1 da maschera 2

    lucavalentino ha scritto:


    Quello che volevo fare è modificare un singolo record di una maschera continua con le combobox.

    So che nelle maschere continue non si può modificare il singolo record

    Chi ti ha detto questa baggianata...?
    Non è vera, o meglio l'affermazioe è falsa in senso ASSOLUTO, ovviamente deve essere ediutabile l'origine dati, se hai una query raggruppata se la vuoi modificare direi che il problema è molto personale... ovvero non hai capito come funziona.

    In ogni caso anche nelle maschere CONTINUE i dati sono editabili.

    lucavalentino ha scritto:


    perciò ho fatto in questo:

    Dalla maschera 1 da un pulsante apro la maschera 2 dove il record è Me.Codice
    DoCmd.OpenForm "Maschera2", acNormal, , , acReadOnly, , "due|" & Me.CODICE
    
    Uso "due|" & Me.CODICE per usare la stessa maschera 2 con altre maschere.
    Prima cosa da distinguere sono le esigenze di chiamata da quelle di Filtro, quindi stai facendo una ENORME cavolata.
    Il Filtro lo metti passando il parametro WHERE e tutte le altre funzioni tramite OpenArgs.

    Seconda cosa se metti acReadOnly cosa pensi di Editare...?

    lucavalentino ha scritto:


    Dopo le dovute modifiche poi chiudo maschera 1 e maschera 2 e in maschera 2 faccio riaprire maschera 1 con args
    codice() = Split(Forms!maschera2.OpenArgs, "|")
    DoCmd.OpenForm "frmCorsiSeminariTutti", acNormal, , , acReadOnly, , codice(1)
    
    Infine riapro la maschera 1 e vado al record appena modificato
    Private Sub Form_open(Cancel As Integer)
    Dim codice As String
    If Not IsNull(Forms!frmCorsiSeminariTutti.OpenArgs) Then
    Me.Requery
    Me.Refresh
    codice= Forms!maschera1.OpenArgs
    Me.Recordset.FindFirst "codice='" & codice & "'"
    End If
    
    Nell'insieme stai facendo una confusione di tutto che non si capisce se stai ragionando o se butti in un secchio delle cose e lo agiti...!

    Fai come ti ho detto e vedrai che senza tante stranezze funziona bene:
    DoCmd.OpenForm "frmCorsiSeminariTutti", acNormal, , "[Codice]='" & Me!codice & "'",acFormEdit , , "ALTRO DATO SE SERVE"
  • Re: Vai a record specifico di maschera 1 da maschera 2

    Lucavalentino (se posso comprendere anch'io), potresti contestualizzare il tutto usando i nomi propri veri delle maschere? Maschera1 e Maschera2 non aiutano a comprendere.
    Di cosa parla il database?
    Spiega tutto facendo un esempio pratico e (almeno io) capiamo meglio.
    È probabile che quello che devi fare veramente si può risolvere in maniera più snella.
  • Re: Vai a record specifico di maschera 1 da maschera 2

    Lucavalentino.
    Ci sono 3 casi principali quando i dati non sono editabili.
    Con una query union, in una query quando le tabelle non sono collegate con le relazioni e quando apri un oggetto in sola lettura.
    E tutte e tre sono situazioni decise consapevolmente e volutamente in fase di sviluppo.
    In tutte le altre fattispecie, sono un errore.
Devi accedere o registrarti per scrivere nel forum
19 risposte