Newsgroup: it.comp.appl.access
Titolo: strcomp

?strcomp("PISCITELLI AMODIO","PISCITELLI AMODIO",vbTextCompare)
  1
 
perchè non sono uguali?
 
 
Saluti
Akery
 
-- 
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus
 
 

 Akery 
 
Fatto COPY/PASTE
 
?strcomp("PISCITELLI AMODIO","PISCITELLI AMODIO",vbTextCompare)
 0 
 
@Alex


anche a me se copio dal newsgroup, però in vba il problema resta, una 
stringa è maggiore dell'altra, nonostante il comando len mi restituisca 
17 per entrambi


 -- 
 
Quindi come possiamo "simulare" il problema...?
 
@Alex

 
 
lo spazio tra le due parole č uno spazio per entrambe le stringhe?
prova a estrarre il codice di quello spazio da entrambe e confrontali
 
-- 
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........


l'ho riportato qui
 
https://www.dropbox.com/s/h1ebjgeoi86jnry/compara.accdb?dl=0
 
 
Saluti


 
come si estrae il codice?
ho cancellato lo spazio e l'ho rimesso e le due stringhe risultano 
uguali, ma come faccio a capire cosa è uno spazio e cosa non lo è?


Assodato che sono entrambe di 17 Caratteri ho fatto una verifica carattere per carattere...!
Ti mostro il codice su Evento CLick di un Button, ed il risultato:
 
 
Private Sub Comando19_Click()
    Dim str1    As String
    Dim str2    As String
    Dim i       As Integer
    str1 = Me.Campo1
    str2 = Me.Campo2
    For i = 1 To Len(str1)
        Debug.Print "STR1-(" & i & ")= " & Asc(Mid$(str1, i, 1)), "STR2-(" & i & ")= " & Asc(Mid$(str2, i, 1))
    Next
    MsgBox StrComp(str1, str2, vbTextCompare)
End Sub
 
STR1-(1)= 80  STR2-(1)= 80
STR1-(2)= 73  STR2-(2)= 73
STR1-(3)= 83  STR2-(3)= 83
STR1-(4)= 67  STR2-(4)= 67
STR1-(5)= 73  STR2-(5)= 73
STR1-(6)= 84  STR2-(6)= 84
STR1-(7)= 69  STR2-(7)= 69
STR1-(8)= 76  STR2-(8)= 76
STR1-(9)= 76  STR2-(9)= 76
STR1-(10)= 73 STR2-(10)= 73
STR1-(11)= 160              STR2-(11)= 32  <---- ECCOLO L'11esimo Carattere non è uguale...!
STR1-(12)= 65 STR2-(12)= 65
STR1-(13)= 77 STR2-(13)= 77
STR1-(14)= 79 STR2-(14)= 79
STR1-(15)= 68 STR2-(15)= 68
STR1-(16)= 73 STR2-(16)= 73
STR1-(17)= 79 STR2-(17)= 79
 
Qualìè l'11esimo...? Quello Spazio... come aveva anche ipotizzato mi pare "Ammammata"
 
Quindi ha ragione lui.
Saluti
@Alex


chr(160) non-breaking space!!! mai sentito nominare, help!
 
come lo sostituisco con chr(32) space?


 come lo sostituisco con chr(32) space?
 
Replace...?
Query Action UPDATE, oppure ciclando...
 
@Alex


RISOLTO!!! con questa query
 
UPDATE personale
SET personale.nominativo = Replace([nominativo],Chr(160),chr(32))
WHERE (((personale.[nominativo]) Like "*" & Chr(160) & "*"));
 
grazie
Akery


 Akery
 
Solo a titolo di riflessione... in questa Query ONE-SHOT, la WHERE che hai scritto non serviva... la dove il Chr(160) non fosse presente... il Replace non fa Replace
 
Ovviamente in Query ripetute, ha invece senso per non prendere tutti i records, ma per ottimizzare, e questo per JET forse non è nemmeno vero se il campo non è Indicizzato.
 
@Alex

 
 
si usa spesso in Word per separare due parole ma alla condizione che non 
vengano divise quando si va a capo (automaticamente): non-breaking, come se 
le due parole di cui sopra fossero una sola


 perchè non sono uguali?
 
Debug.Print StrComp("PISCITELLI AMODIO", "PISCITELLI AMODIO")
0
 
Si possono fare anche le cose semplici:
Debug.Print "PISCITELLI AMODIO"="PISCITELLI AMODIO"
True


Dalla risposta che hai dato i casi sono 2:
1) Hai fatto il test Copia/Incollando le stringhe dal NG, ed ovviamente ottieni lo stesso risultato in quanto queste stringhe SONO UGUALI, come già indicato dalle prime risposte.
2) NON hai fatto il TEST sul DB che ha messo a disposizione, perchè se tu lo avessi fatto PROPRIO su quello, il risultato di strComp e di = sarebbe stato coerente offero avresti avuto 
dalla strComp il False e dal confronto da te suggerito con = il False, ricordo che sono equivalenti...!
 
Questo accade in quanto analizzando la stringa contenuta nel suo DB, il carattere interposto in 11° posizione è diverso, ovvero in un caso un chr(32) e nell'altro un chr(160).
Va da se che anche il confronto con = non può dare VERO/TRUE
 
Quindi cosa intendi quando dici si possono fare cose semplici...?
 
@Alex

@Alex has brought this to us :

Evidentemente non ho letto l'intero messaggio e ho pensato trattarsi
dell'ennesima sciocca richiesta.
Chiedo scusa all'OP.
 
Beh è evidente che CHR(160), non-breaking space, differisce da CHR(32)
(space) normale.
 
Bruno

 
 
ti pare bene :)
