[Risolto] Convertire testo da minuscolo a maiuscolo

Discussioni sulle caratteristiche di database
Rispondi
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

[Risolto] Convertire testo da minuscolo a maiuscolo

Messaggio da sanraff »

Buonasera a tutti, premetto che sono alle prime armi e lo capirete anche dalla seguente richiesta.
Per iniziare questo percorso d'apprendimento ho inventato un db di fantasia, di cui allego file ed uno dei primi ostacoli che ho incontrato è quello di voler trasformare in modo automatico nel campo "Codice Fiscale", tutto quello che scrivo in minuscolo in maiuscolo.
Pensavo di risolverlo con il registratore di macro, come a volte faccio con "Calc", però mi sono accorto che così non è.
Sarebbe possibile capire come si fa?
Ringrazio anticipatamente a chi mi darà una mano
Allegati
Gestionale.odb
(14.14 KiB) Scaricato 150 volte
Ultima modifica di sanraff il domenica 25 settembre 2016, 21:52, modificato 1 volta in totale.
OpenOffice 3.3 SU WINDOWS 7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Convertire testo da minuscolo a maiuscolo

Messaggio da charlie »

Ciao, a livello Query puoi usare la funzione UPPER("Nome_Campo") che trasforma in maiuscole tutte le lettere.
A livello formulario al posto di un campo testo puoi usare un campo con maschera che costringe a digitare lettere maiuscole e numeri dove sono richiesti.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Convertire testo da minuscolo a maiuscolo

Messaggio da Gaetanopr »

Ciao sanraff, vedo che ti stai cimentando con base :super:
Oltre a quanto detto da charlie puoi usare questa piccola macro

Codice: Seleziona tutto

Sub Maiuscolo(Ev)
Ev.Source.Text = UCase(Ev.Source.Text)
End Sub
Sempre associata all'evento perdita punto focale.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Convertire testo da minuscolo a maiuscolo

Messaggio da sanraff »

Buonasera ragazzi, innanzitutto grazie per avermi risposto in modo così celere.
Andando per ordine alle soluzioni da voi consigliate, posso dire che per mia inesperienza ed ignoranza non ho capito quella di charlie, anzi se fosse possibile avere un tuo file di esempio, te ne sarei grato, così mi daresti la possibilità di iniziare ad imparare nel modo corretto.
Per quanto riguarda te, Gaetanopr, come vedi ho ascoltato un tuo consiglio espresso in un precedente post di "Calc", spero di riuscire ad appassionarmi in questa nuova avventura come è stato per "Calc", che per me resta sempre un buon punto di riferimento.
Ho provato la tua macro, è palese che funziona bene e non avevo dubbi, solo che riguardando i dati scritti nella tabella corrispondente al form, questi ultimi vengono riportati in minuscolo e non in maiuscolo, mentre io pensavo che la cosa accadesse in automatico anche lì.
Ho forse sbagliato qualche formattazione?.
Ti dispiacerebbe darmi qualche informazione in più?, magari mi potresti far capire come si fa a riportarli anche lì in maiuscolo quando la compilazione avviene dal form di inserimento, grazie
OpenOffice 3.3 SU WINDOWS 7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Convertire testo da minuscolo a maiuscolo

Messaggio da charlie »

Ciao, il file allegato contiene una Query di esempio per la funzione UPPER.
Nel formulario il campo Codice Fiscale è stato convertito in un Campo a Maschera che accetta solo 16 caratteri nel formato AAAAAAANNANNANNA (A per le lettere, N per i numeri). Le lettere minuscole digitate vengono memorizzate come maiuscole. Vedi le Proprietà:
Schermata 09-2457653 alle 21.55.55.png
Allegati
Gestionale_2.odb
(14.23 KiB) Scaricato 153 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Convertire testo da minuscolo a maiuscolo

Messaggio da Gaetanopr »

Una volta confermato il record i caratteri ritornano in minuscolo ecco perche nella tabella vengono riportati in questo modo, basta aggiornare il campo testo prima del salvataggio sempre tramite macro.
Questa è la nuova macro

Codice: Seleziona tutto

Sub Maiuscolo(Ev)
Ev.Source.Text = UCase(Ev.Source.Text)
oForm = Ev.Source.Model.Parent
oForm.getbyname("txtCodice Fiscale").commit = true
End Sub
La soluzione del campo a maschera è la migliore nel caso del codice fiscale anche se c'è da fare una precisazione
charlie ha scritto:..........in un Campo a Maschera che accetta solo 16 caratteri.........
Per essere più precisi si può indicare la lunghezza massima, quindi anche inserendo correttamente 15 caratteri e non 16 non viene segnalato l'errore, si può ovviare con una macro del genere

Codice: Seleziona tutto

Sub LunghezzaCod(Ev)
If Len(TRIM(Ev.Source.Text)) <> 16 Then MsgBox "Lunghezza Codice Fiscale errata" : Exit Sub
End Sub
Opzione
In un formulario che ho creato su CALC per l'inserimento di anagrafica ho inserito una macro che effettua diversi controlli tra cui la lunghezza (16) e la corretta indicazione dei caratteri.

Codice: Seleziona tutto

Sub Controllo_PIva_CodFisc(Ev)
Dim Record As String
Dim Lunghezza As Long
Dim Formato(15) AS Boolean

Record = Ev.Source.Text
Lunghezza = Trim(Len(Ev.Source.Text))

if Ev.Source.Model.Name = "Piva" Then 
   If Lunghezza <> 11 Then MsgBox "Lunghezza Partita Iva errata" : Exit Sub
   For i = 1 To Lunghezza
    if IsNumeric(Mid(Ev.Source.String, i, 1)) = False Then 
       MsgBox "Partita Iva errata"
       Ev.Source.setFocus
       exit sub
    end if
   next i   
  
Elseif Ev.Source.Model.Name = "txtCodice Fiscale" Then 
   If Lunghezza <> 16 Then MsgBox "Lunghezza Codice Fiscale errata" : Exit Sub
   Formato = Array(0,0,0,0,0,0,1,1,0,1,1,0,1,1,1,0)
   For i = 1 To Ubound(Formato)
    if IsNumeric(Mid(ev.Source.Text, i+1, 1)) <> CBool(Formato(i)) Then 
       MsgBox "Codice Fiscale errato"
       Ev.Source.setFocus
       exit sub
    end if
   next i    
End if

Ev.Source.Text = UCase(Record)
oForm = Ev.Source.Model.Parent
oForm.getbyname(Ev.Source.Model.Name).commit = true
End Sub
Questa è la macro adattata al tuo file, come puoi vedere effettua pure un controlo su un campo di testo destinato a contenere il numero della partita iva.

Allego pure file
Saluti
Allegati
Gestionale_gaetanopr.odb
(14.78 KiB) Scaricato 131 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Convertire testo da minuscolo a maiuscolo

Messaggio da sanraff »

Buonasera ragazzi, scusatemi se vi rispondo solo adesso, ma ho avuto dei problemi con il PC a causa di forti temporali nella mia zona.
Ad ogni modo, non posso altro che ringraziarvi per lo splendido lavoro e per quello che mi state insegnando, anzi prima di concludere questo post volevo sapere se era possibile imparare ad ottenere le parole anzichè tutte in maiuscolo, solo le iniziali, per implementare questa funzione per alcuni campi del db che ho creato, parole che dovrò riscontrarle anche nella tabella, grazie
OpenOffice 3.3 SU WINDOWS 7
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Convertire testo da minuscolo a maiuscolo

Messaggio da Gaetanopr »

Ho modificato la macro in modo tale da ottenere le prime lettere in maiuscolo.

Codice: Seleziona tutto

Sub Maiuscolo(Ev)
a = Split(Ev.Source.Text)
For i = 0 To Ubound(a)
   a(i) = UCase(Left(a(i), 1)) & LCase(Right(a(i), Len(a(i))-1))
Next i
Ev.Source.Text = Join(a)
oForm = Ev.Source.Model.Parent
oForm.getbyname(Ev.Source.Model.Name).commit = true
End Sub
Saluti
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Convertire testo da minuscolo a maiuscolo

Messaggio da sanraff »

ok, grazie per tutto :super:
OpenOffice 3.3 SU WINDOWS 7
Rispondi