Results 1 to 5 of 5
  1. #1
    diegomarino is offline Competent Performer
    Windows 10 Access 2016
    Join Date
    Feb 2018
    Posts
    409

    SelStart textbox problem

    hi, i have a in which i have a continuos form and anothe form that show selected record from the first one


    i used to set recordsource using an sql string, then i decided to make a query and change the sql using query def; in this operation i had a new problem: when i write a name in CandidatiFIltTB that it's not in the consinuos form, the code " Me.CandidatiFIltTB.SelStart = Nz(Len(Me.CandidatiFIltTB), 0)" give me an error 2185 (the one about control not having focus)

    i just can't figure out why, it worked as far i set the recordsource using an sql string

    Code:
    Private Sub Form_Timer()   Me.TimerInterval = 0
       Me.CandidatiFIltTB.SetFocus
       Me.Filter = "[cognome] LIKE ""*" & Me.CandidatiFIltTB.Text & "*"" "
       Me.FilterOn = True
       If Me.RecordsetClone.RecordCount = 0 Then
         sql = "SELECT Candidati.idcandidato,Candidati.Nome,Candidati.Cognome,Candidati.nome & "" "" & Candidati.cognome as NomeCognome, IIf([posizionelavorativa] And [azienda]<>"""",[posizionelavorativa] & "" in "" & [azienda],"""") AS DatiProfessionali,Candidati.cellulare, Candidati.tag, Comuni.Comune, Comuni.Provincia, Comuni.Regione, Professioni.PosizioneLavorativa, Professioni.Tipodicontratto, Professioni.Settore, Aziende.Azienda, Candidati.[ptf banca personale], Candidati.[ptf trasferibile personale], Candidati.[ptf trasferibile gruppo], Candidati.[RAL/Fatturato], Candidati.[Corrispettivo patto], Candidati.[Penale economica], Candidati.[origine head hunter], Candidati.manager " & vbCrLf & _
               "FROM Professioni RIGHT JOIN (Aziende RIGHT JOIN (Comuni RIGHT JOIN Candidati ON Comuni.IDComune = Candidati.ComuneID) ON Aziende.IDazienda = Candidati.AziendaID) ON Professioni.IDposizione = Candidati.PosizioneID " & vbCrLf & _
               "ORDER BY Candidati.Cognome, candidati.Nome;"
     
       CurrentDb.QueryDefs("qrylistacandidati").sql = sql
       End If
       Me.CandidatiFIltTB.SetFocus      'serve a portare il cursore dopo l'ultima lettera presente nella textbox
       Me.CandidatiFIltTB.SelStart = Nz(Len(Me.CandidatiFIltTB), 0)
       Me.CandidatiFIltTB.SelLength = Nz(Len(Me.CandidatiFIltTB), 0)
       If Me.RecordsetClone.RecordCount = 1 Then
          sql = "SELECT Candidati.IDcandidato,candidati.Nome,candidati.Cognome, Candidati.nome & "" "" & Candidati.cognome as NomeCognome,Candidati.Cellulare, Candidati.[Telefono fisso], Candidati.[Email personale], Candidati.[Email ufficio], Candidati.[Data di nascita], Comuni.Comune, Comuni.Provincia, Comuni.Regione, Comuni.Zona, Aziende.Azienda, Professioni.PosizioneLavorativa, Professioni.Tipodicontratto, Professioni.Settore, Candidati.[Ptf banca personale], Candidati.[Ptf banca gruppo], Candidati.[Ptf trasferibile personale], Candidati.[Ptf trasferibile gruppo], Candidati.[Numero clienti banca], Candidati.[Numero clienti personali], Candidati.[Numero clienti gruppo], Candidati.[Note portafoglio], Candidati.[Ptf gestito], " & vbCrLf & _
                "Candidati.[Ptf assicurativo], Candidati.[Ptf amministrato], Candidati.Liquidità, Candidati.[Redditività ptf trasferibile], Candidati.[Scadenza patto], Candidati.[Penale economica], Candidati.[Patto di non concorrenza], Candidati.[Ultimo cambio azienda], Candidati.Livello, Candidati.[RAL/Fatturato], Candidati.Premi, Candidati.[Corrispettivo patto], Candidati.Iscrizione, Candidati.[Iscrizione albo], Candidati.Zone, Candidati.Formazione, Candidati.[Contratto del credito], Candidati.[Contratto di agenzia], Candidati.Descrizione, Candidati.[Gestito da], Candidati.[Origine head hunter], Candidati.Indirizzo, Candidati.Valutazione, Candidati.Relazione, " & vbCrLf & _
                "Candidati.Manager, Candidati.Benefit, Candidati.Foto, Candidati.Linkedin, Candidati.titoloC, Candidati.Tag, Candidati.[Data/ora modifica], Candidati.DataModificaNum, Candidati.[Data/ora creazione], Candidati.DataCreazioneNum, Candidati.ModificatoDa, Candidati.RN, Candidati.TipoContatto " & vbCrLf & _
                "FROM Aziende RIGHT JOIN (Professioni RIGHT JOIN (Comuni RIGHT JOIN Candidati ON Comuni.IDComune = Candidati.ComuneID) ON Professioni.IDposizione = Candidati.PosizioneID) ON Aziende.IDazienda = Candidati.AziendaID " & vbCrLf & _
                "WHERE (((Candidati.IDcandidato)= " & Me.IDcandidato & "));"
          CurrentDb.QueryDefs("qrycandidatodettaglio").sql = sql
    
    
          Forms!contatti!Candidati.Form.RecordSource = "qrycandidatodettaglio"
        End If
    End Sub

  2. #2
    CJ_London is online now VIP
    Windows 10 Access 2010 32bit
    Join Date
    Mar 2015
    Posts
    11,444
    this is a good time to learn to use the vba immediate window to test your values. In this case

    ?len("abc")
    3
    ?len("")
    0
    ?len(Null)
    Null

    so you are trying to set a length of 0 when there is no length

    ergo you need to use a different method - suggest


    if not isnull(Me.CandidatiFIltTB) then Me.CandidatiFIltTB.SelLength = Len(Me.CandidatiFIltTB)

    or perhaps

    if Nz(Len(Me.CandidatiFIltTB), 0)>0 then Me.CandidatiFIltTB.SelLength = Len(Me.CandidatiFIltTB)

  3. #3
    diegomarino is offline Competent Performer
    Windows 10 Access 2016
    Join Date
    Feb 2018
    Posts
    409
    sorry, i was not clear. the problem is not when the textbox is empty, is when there is no match in the records of the continuos form. that's the strange thing, and i clearify more, before i set recordource in the way "me.recordsource = sql" instead of set a query as recordsource and change the sql property through querydef it worked

  4. #4
    CJ_London is online now VIP
    Windows 10 Access 2010 32bit
    Join Date
    Mar 2015
    Posts
    11,444
    so you are saying the recordset has no rows returned?

    In that case you need to check for EOF before running the rest of the code as the state your recordset is in is 'empty', not 'null'

    I'm not clear what your code is intended to do. (would help us and you down the line if you add some comments to explain) You've filtered your form recordset, then modify? a query if there are no records after filtering- but that doesn't affect your form recordset so far as I can see. If it is your form recordsource you need to requery the form recordsource (me.requery).

    Suggest you step through your code checking values and states as you go

  5. #5
    diegomarino is offline Competent Performer
    Windows 10 Access 2016
    Join Date
    Feb 2018
    Posts
    409
    Got it. i had to add "me.filteron = false" if no match

    Code:
    Private Sub Form_Timer()   Me.TimerInterval = 0
       Me.CandidatiFIltTB.SetFocus
       Me.Filter = "[cognome] LIKE ""*" & Me.CandidatiFIltTB.Text & "*"" "
       Me.FilterOn = True
       If Me.RecordsetClone.RecordCount = 0 Then
         sql = "SELECT Candidati.idcandidato,Candidati.Nome,Candidati.Cognome,Candidati.nome & "" "" & Candidati.cognome as NomeCognome, IIf([posizionelavorativa] And [azienda]<>"""",[posizionelavorativa] & "" in "" & [azienda],"""") AS DatiProfessionali,Candidati.cellulare, Candidati.tag, Comuni.Comune, Comuni.Provincia, Comuni.Regione, Professioni.PosizioneLavorativa, Professioni.Tipodicontratto, Professioni.Settore, Aziende.Azienda, Candidati.[ptf banca personale], Candidati.[ptf trasferibile personale], Candidati.[ptf trasferibile gruppo], Candidati.[RAL/Fatturato], Candidati.[Corrispettivo patto], Candidati.[Penale economica], Candidati.[origine head hunter], Candidati.manager " & vbCrLf & _
               "FROM Professioni RIGHT JOIN (Aziende RIGHT JOIN (Comuni RIGHT JOIN Candidati ON Comuni.IDComune = Candidati.ComuneID) ON Aziende.IDazienda = Candidati.AziendaID) ON Professioni.IDposizione = Candidati.PosizioneID " & vbCrLf & _
               "ORDER BY Candidati.Cognome, candidati.Nome;"
     
          CurrentDb.QueryDefs("qrylistacandidati").sql = sql
          Me.FilterOn = False
       Me.Refresh
       End If
       Me.CandidatiFIltTB.SetFocus      'serve a portare il cursore dopo l'ultima lettera presente nella textbox
       Me.CandidatiFIltTB.SelStart = Nz(Len(Me.CandidatiFIltTB), 0)
       Me.CandidatiFIltTB.SelLength = Nz(Len(Me.CandidatiFIltTB), 0)
       If Me.RecordsetClone.RecordCount = 1 Then
          sql = "SELECT Candidati.IDcandidato,candidati.Nome,candidati.Cognome, Candidati.nome & "" "" & Candidati.cognome as NomeCognome,Candidati.Cellulare, Candidati.[Telefono fisso], Candidati.[Email personale], Candidati.[Email ufficio], Candidati.[Data di nascita], Comuni.Comune, Comuni.Provincia, Comuni.Regione, Comuni.Zona, Aziende.Azienda, Professioni.PosizioneLavorativa, Professioni.Tipodicontratto, Professioni.Settore, Candidati.[Ptf banca personale], Candidati.[Ptf banca gruppo], Candidati.[Ptf trasferibile personale], Candidati.[Ptf trasferibile gruppo], Candidati.[Numero clienti banca], Candidati.[Numero clienti personali], Candidati.[Numero clienti gruppo], Candidati.[Note portafoglio], Candidati.[Ptf gestito], " & vbCrLf & _
                "Candidati.[Ptf assicurativo], Candidati.[Ptf amministrato], Candidati.Liquidità, Candidati.[Redditività ptf trasferibile], Candidati.[Scadenza patto], Candidati.[Penale economica], Candidati.[Patto di non concorrenza], Candidati.[Ultimo cambio azienda], Candidati.Livello, Candidati.[RAL/Fatturato], Candidati.Premi, Candidati.[Corrispettivo patto], Candidati.Iscrizione, Candidati.[Iscrizione albo], Candidati.Zone, Candidati.Formazione, Candidati.[Contratto del credito], Candidati.[Contratto di agenzia], Candidati.Descrizione, Candidati.[Gestito da], Candidati.[Origine head hunter], Candidati.Indirizzo, Candidati.Valutazione, Candidati.Relazione, " & vbCrLf & _
                "Candidati.Manager, Candidati.Benefit, Candidati.Foto, Candidati.Linkedin, Candidati.titoloC, Candidati.Tag, Candidati.[Data/ora modifica], Candidati.DataModificaNum, Candidati.[Data/ora creazione], Candidati.DataCreazioneNum, Candidati.ModificatoDa, Candidati.RN, Candidati.TipoContatto " & vbCrLf & _
                "FROM Aziende RIGHT JOIN (Professioni RIGHT JOIN (Comuni RIGHT JOIN Candidati ON Comuni.IDComune = Candidati.ComuneID) ON Professioni.IDposizione = Candidati.PosizioneID) ON Aziende.IDazienda = Candidati.AziendaID " & vbCrLf & _
                "WHERE (((Candidati.IDcandidato)= " & Me.IDcandidato & "));"
          CurrentDb.QueryDefs("qrycandidatodettaglio").sql = sql
    
    
          Forms!contatti!Candidati.Form.RecordSource = "qrycandidatodettaglio"
        End If
    End Sub
    thanks

Please reply to this thread with any new information or opinions.

Similar Threads

  1. Replies: 1
    Last Post: 05-28-2020, 01:15 PM
  2. problem communicating textbox with query
    By epardo87 in forum Access
    Replies: 3
    Last Post: 02-17-2017, 12:28 PM
  3. Problem with Textbox Value
    By ironbutterfly in forum Access
    Replies: 2
    Last Post: 04-28-2014, 11:14 AM
  4. SelStart not accounting from spaces?
    By tylerg11 in forum Forms
    Replies: 2
    Last Post: 06-28-2012, 04:45 PM
  5. SelStart problem
    By ybg1 in forum Access
    Replies: 2
    Last Post: 11-14-2010, 12:50 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Other Forums: Microsoft Office Forums