[Risolto] Macro apre Form Dati

Discussioni sull'applicazione per i fogli di calcolo
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro apre Form Dati

Messaggio da patel »

cliccando sui vari campi puoi vedere nella finestra delle proprietà se sono campi numerici o di testo e li puoi cambiare. Di questo devi tenere conto anche nella macro (vedi commenti)

Codice: Seleziona tutto

Private Sub cmdWriteCell   

   dim data as date
   dim Cognome as String                             ' Var. testo
   dim VENDITE as Currency, SERVIZIO1@, SERVIZIO2@  
   dim POS@, CONTANTI@, NONRISCOSSO@      
' --- acquisizione dati dalla maschera
   Cognome = dlg.getControl("TextField1").text       ' LEGGO IL VALORE INSERITO DALL'UTENTE come testo
   data = dlg.getControl("DateField1").text           ' LEGGO IL VALORE INSERITO DALL'UTENTE come testo
   VENDITE = dlg.getControl("NumericField1").value    ' LEGGO IL VALORE INSERITO DALL'UTENTE come numero
   SERVIZIO1@ = dlg.getControl("NumericField2").value ' LEGGO IL VALORE INSERITO DALL'UTENTE come numero
   SERVIZIO2@ = dlg.getControl("NumericField3").value ' LEGGO IL VALORE INSERITO DALL'UTENTE
   POS@ = dlg.getControl("NumericField4").value       ' LEGGO IL VALORE INSERITO DALL'UTENTE
   CONTANTI@ = dlg.getControl("NumericField5").value  ' LEGGO IL VALORE INSERITO DALL'UTENTE
   NONRISCOCCO@ = dlg.getControl("NumericField6").value ' LEGGO IL VALORE INSERITO DALL'UTENTE
'   ------------------- ricerca dell'ultima riga
    Sheet = ThisComponent.Sheets(0)
    c = Sheet.createCursor
    c.gotoEndOfUsedArea(false)
    LastRow = c.RangeAddress.EndRow + 2
'   ---------- riempimento della prima riga vuota 
    Sheet.getCellRangeByName("A" & LastRow).value = data
    Sheet.getCellRangeByName("C" & LastRow).Value = VENDITE
    Sheet.getCellRangeByName("D" & LastRow).Value = SERVIZIO1
    Sheet.getCellRangeByName("E" & LastRow).Value = SERVIZIO2
    Sheet.getCellRangeByName("F" & LastRow).Value = POS
    Sheet.getCellRangeByName("G" & LastRow).Value = CONTANTI
    Sheet.getCellRangeByName("H" & LastRow).Value = NONRISCOCCO
    Sheet.getCellRangeByName("I" & LastRow).Value = Cognome ' qui è sbagliato perché value significa numero devi cambiare value con string

End sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Macro apre Form Dati

Messaggio da sanraff »

Hai ragione, infatti dopo alcuni tentativi ci sono arrivato anch'io solo però non ho capito una cosa,
1) Volendo fare accettare nel campo testo solo lettere e non numeri come posso fare?
2) Una volta cliccato sul tasto "Conferma" e volendo inserire nuovi dati, invece di chiudere e riaprire la maschera è possibile creare un sistema dove si mette a pulito tutto e ritorna il fuoco sul campo data?.

grazie
OpenOffice 3.3 SU WINDOWS 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro apre Form Dati

Messaggio da patel »

1) non lo so fare
2) basta aggiungere in fondo una serie di righe come questa

Codice: Seleziona tutto

    dlg.getControl("TextField1").text = ""
    dlg.getControl("NumericField1").text = ""
col campo data per ultimo, ma è anche inutile perché devi comunque cliccare sul calendario
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Macro apre Form Dati

Messaggio da sanraff »

Fatto test
La pulizia la fa, però il cursore sul campo data non ritorna.
Per il punto due, aspetto l'intervento di qualcun altro dopodiché metto risolto
Grazie cmq per il tuo prezioso aiuto
OpenOffice 3.3 SU WINDOWS 7
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Macro apre Form Dati

Messaggio da sanraff »

Chiedo scusa, mi son confuso, volevo dire per il punto uno
grazie
OpenOffice 3.3 SU WINDOWS 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro apre Form Dati

Messaggio da patel »

per riposizionare il fuoco
dlg.getControl("DateField1").setfocus()

per la prima domanda vedi viewtopic.php?f=9&t=7873&sid=dd756fc342 ... fa463bb0ee
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Macro apre Form Dati

Messaggio da sanraff »

Ciao patel, in base al tuo ultimo post ho fatto test tutto ok, solo che mentre facevo delle prove ho creato una tabella e mi sono accorto che i dati vengono inseriti al di fuori di questa.
Ho provato a cercare qualcosa sulla guida di Basic però non ho capito ugualmente come trascrivere la corretta riga di comando
E' possibile avere un ulteriore aiuto?, in allegato metto file per test

grazie
Allegati
DialogoOKver3.ods
(14.63 KiB) Scaricato 128 volte
OpenOffice 3.3 SU WINDOWS 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro apre Form Dati

Messaggio da patel »

il codice che hai usato per trovare l'ultima riga non funziona su tabelle con la griglia, devi usare questo

Codice: Seleziona tutto

LastRow =  LastRowInColonna(Sheet,1)  + 2
......
Function LastRowInColonna(oSheet As Object, Col As Long) As Long
  Dim c As Object, oRangePiena As Object, LastRow As Long
  c = oSheet.createCursor
  c.gotoEndOfUsedArea(false)
  LastRow = c.RangeAddress.EndRow
  oRangePiena = oSheet.getCellRangeByPosition(Col, 0, Col, LastRow).queryContentCells(1+2+4).RangeAddresses
  If Ubound(oRangePiena) < 0 Then
       LastRowInColonna = - 1
  Else   
       LastRowInColonna = oRangePiena(Ubound(oRangePiena)).EndRow
  End if 
End Function
Allegati
DialogoOKver3.ods
(14.17 KiB) Scaricato 127 volte
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Macro apre Form Dati

Messaggio da sanraff »

Buonasera patel, ho fatto test e sono andato leggermente avanti con questo file di esempio che mi sono inventato per capire come inserire e gestire i dati all'interno di una maschera di dialogo; infatti ho creato una maschera per la modifica ed una per la visualizzazione dei dati.
Tramite una combobox, vorrei richiamare i dati già inseriti, con la possibilità di visualizzarli oppure di modificarli.
Facendo una ricerca in rete, ho trovato un file di esempio simile, ho cercato di adattarlo al mio però non mi funziona.
In allegato riporto quello che sono riuscito a fare solo per la parte della modifica dei dati ( che però non funziona ), mentre per il "visualizza" non so come impostarla a meno ché, forse si potrebbe impostare la macro come quella realizzata per "modifica" omettendo il tasto conferma.
E' possibile avere un ulteriore aiuto?, grazie
Allegati
DialogoOK scrivere in tabella.ods
(23.95 KiB) Scaricato 112 volte
OpenOffice 3.3 SU WINDOWS 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro apre Form Dati

Messaggio da patel »

non fai abbastanza attenzione

Codice: Seleziona tutto

sub riempicombobox
 Dim oDoc
 Dim oSheet
 Dim oCell
 Dim a As String
 oDoc = ThisComponent ' necessario
 oSheet = oDoc.sheets(0) ' necessario
oComboBox.removeItems(0,oComboBox.getItemCount())
 For i = 3 to 100 ' i dati iniziano dalla quarta riga
  oCell = oSheet.getCellByPosition(1, i) ' la colonna con i nomi è la B
  a = oCell.String
  if a <> ""  then
  oComboBox.addItem(a, dlg.getControl("ComboBox1").ItemCount) ' List
  end if
next i

End sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Macro apre Form Dati

Messaggio da sanraff »

patel ha scritto:non fai abbastanza attenzione
Hai perfettamente ragione, ma questo è dovuto alla mia inesperienza :crazy:

cmq nella sub text che assegno alla "combobox1 del dialog Modifica" mi da errore su questa stringa:

MyCounter = dlg.getControl("ComboBox1").selectedItemPos + 2

e non mi permette di proseguire.

Per quanto riguarda la procedura per il "visualizza" era giusta la mia intuizione?
sanraff ha scritto:mentre per il "visualizza" non so come impostarla a meno ché, forse si potrebbe impostare la macro come quella realizzata per "modifica" omettendo il tasto conferma.
ancora, grazie per il tuo supporto
OpenOffice 3.3 SU WINDOWS 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro apre Form Dati

Messaggio da patel »

Il controllo combo non ha la proprieta selecteditem, ma solo text, quindi non puoi ottenere il numero di riga ma solo l'elemento selezionato, quindi per calcolare la riga occorre qualcosa del genere

Codice: Seleziona tutto

sub text
 oDoc = ThisComponent
 oSheet = oDoc.sheets(0) ' <<<< non dimenticartelo
 item = oComboBox.text

 For x = 0 to oComboBox.ItemCount - 1
      If oComboBox.Items(x) = item Then
         MyCounter = x+4
         exit for
      end if
 next

dlg.getControl("TextField1").Text = oSheet.getCellRangeByName("B" & MyCounter).String 'Cognome ' <<<< quando una cosa funziona perché cambiarla ?
........
In alternativa potresti usare una listbox al posto della combo, la listbox dispone di selecteditem e selecteditempos.
N.B tieni presente quanto hai già fatto nelle sub di inserimento già funzionanti e collaudate
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Macro apre Form Dati

Messaggio da sanraff »

ciao patel, senza questa tua macro e spiegazione, non ci sarei mai arivato e voglio continuare ad adottare la soluzione per la combobox.
Nel frattempo sono andato un pò avanti ed ho completato la parte per la visualizzazione dei dati, però facendo test, mi sono accorto che c'è ancora qualcosa che non va segue
1) Macro Apri Inserisci: il controllo che ho messo sull'inserimento dei dati non funziona correttamente, forse al posto del costrutto "If", ci vuole "Case", però non lo so scrivere
2) Macro Apri Modifica: non mi permette di modificare i dati, il tasto "Conferma" a chi lo deve associare perché avvenga questo?
3) Macro Apri Visualizza: è l'unica che mi funziona come vorrei, tranne per il fatto che i dati inerenti all'orario e la data, li vorrei posizionati al centro anzichè a sinistra; ho provato a cambiare le impostazioni da proprietà ma non funziona.

Poi volevo provare a fare una cosa presa come spunto da una tua antecedente macro scritta in un altro post, mi riferisco a rendere visibile e non visibile un campo, solo che io invece vorrei abilitare o disabilitare un campo, mi spiego:
nella macro apri modifica, l'unico campo abilitatato deve essere quello della combobox, poi dopo la scelta, i campi vengono abilitati tutti per rendere possibile la modifica.
Se mi spieghi come si scrive la stringa, poi io riprendendo la tua già proposta macro, potrei provare a scrivere la macro, così faccio pratica.

Ancora grazie per questo tuo prezioso aiuto
Allegati
DialogoOK scrivere in tabella.ods
(26.12 KiB) Scaricato 105 volte
OpenOffice 3.3 SU WINDOWS 7
XLUPOGRIGIOX
Messaggi: 142
Iscritto il: domenica 10 maggio 2015, 18:17
Località: Busto Arsizio (VA)

Re: Macro apre Form Dati

Messaggio da XLUPOGRIGIOX »

Ciao a tutti,scusate se mi intrometto,ma sanraff se invece di usare 3 diversi dialoghi,non ne usi uno e poi in base ai pulsanti che premi o alle operazioni che devi fare cambi step o rendi visibili o invisibili determinati pulsanti?
OpenOffice 4.1.1 su windows seven
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro apre Form Dati

Messaggio da patel »

sanraff ha scritto: 1) Macro Apri Inserisci: il controllo che ho messo sull'inserimento dei dati non funziona correttamente, forse al posto del costrutto "If", ci vuole "Case", però non lo so scrivere
non ho capito di cosa parli
sanraff ha scritto: 2) Macro Apri Modifica: non mi permette di modificare i dati, il tasto "Conferma" a chi lo deve associare perché avvenga questo?
la devi scrivere la sub per la conferma, ad es.

Codice: Seleziona tutto

sub ScriviModifiche
oSheet.getCellRangeByName("B" & MyCounter).String = dlg.getControl("TextField1").Text
........
sanraff ha scritto: Se mi spieghi come si scrive la stringa, poi io riprendendo la tua già proposta macro, potrei provare a scrivere la macro, così faccio pratica.
per nascondere un campo

Codice: Seleziona tutto

   dlg.getControl("CommandButton1").Visible = False
Ultima modifica di patel il lunedì 14 novembre 2016, 9:42, modificato 1 volta in totale.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Macro apre Form Dati

Messaggio da sanraff »

ciao XLUPOGRIGIOX, sei il benvenuto, però ti stai rivolgendo ad uno che per il momento sta imparando ad usare e gestire le macro, infatti se hai seguito un pò tutti questi post, ti sarai reso conto che patel mi sta dando una grandissima mano.
Ad ogni modo se a te non ti scoccia insegnarmi quest'altro metodo senza stravolgere il lavoro fin qui fatto ben venga, significa che mi darai la possibilità di imparare nuove cose.

Ritornando a te patel, se apri la macro "apri inserisci", all'interno ho messo un costruttto IF sul controllo dei campi che se non vengono tutti riempiti in fase di inserimento, lancia un messaggio di avviso. IL problema è che questa funzione non viene eseguita correttamente, infatti anche se i campi cono tutti riempiti e clicco sul tasto "conferma", il sistema mi lancia ugualmente il messaggio di avviso e non ho capito dove sbaglio.

2) La macro per eseguire la modifica ci provo a scriverla io dietro tuo suggerimento e poi vediamo

3) Macro "Apri Visualizza", come faccio a posizionare la visualizzazione dei dati in modo centrale all'etichetta e non spostato a sinistra?

grazie
OpenOffice 3.3 SU WINDOWS 7
XLUPOGRIGIOX
Messaggi: 142
Iscritto il: domenica 10 maggio 2015, 18:17
Località: Busto Arsizio (VA)

Re: Macro apre Form Dati

Messaggio da XLUPOGRIGIOX »

Ciao sanraff,usando le tue macro ho creato un unico modulo chiamato XLUPOX che apre il dialogo visualizza modificato da me.
Per aprirlo basta che clicchi sul pulsante creadialog XLUPOX.
Questo è solo uno spunto per te,per migliorare di più soprattutto grazie a Patel :super:
Fammi sapere come ti sembra
Allegati
DialogoOK scrivere in tabella XLUPOX.ods
(30.72 KiB) Scaricato 109 volte
OpenOffice 4.1.1 su windows seven
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro apre Form Dati

Messaggio da patel »

sanraff ha scritto: Ritornando a te patel, se apri la macro "apri inserisci", all'interno ho messo un costruttto IF sul controllo dei campi che se non vengono tutti riempiti in fase di inserimento, lancia un messaggio di avviso.
tu fai il controllo prima di assegnare alle variabili nome cognome ... i contenuti dei vari controlli, questo lo devi fare dopo
sanraff ha scritto: 3) Macro "Apri Visualizza", come faccio a posizionare la visualizzazione dei dati in modo centrale all'etichetta e non spostato a sinistra?
grazie
non so farlo

@lupo, l'ho notato anche io, ma mi sono astenuto dal farlo presente per non mettere troppa carne al fuoco, in effetti ci sono molte ripetizioni, mi riservavo di farlo notare alla fine del percorso.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Macro apre Form Dati

Messaggio da sanraff »

ciao XLUPOGRIGIOX, ho visto il tuo lavoro, che dire è bellissimo però sicuramente non ai livelli di un principiante come me :bravo:
Magari quando avrò finito il mio, come dice giustamente patel, emigrerò sul tuo così darò un aspetto sicuramente più accattivante.
Tornando a noi tu saresti in grado di risolvermi questo problema??
patel ha scritto:Macro "Apri Visualizza", come faccio a posizionare la visualizzazione dei dati in modo centrale all'etichetta e non spostato a sinistra?
grazie
patel ha scritto:non so farlo
grazie

Nel frattempo io sono andato avanti, ho scritto meglio il costrutto "If" nella macro "Apri Inserimento", poiché per come l'avevo fatto prima non funzionava correttamente e non si trattava solo della posizione, era proprio scritto male.
Poi sono riuscito a scrivere la macro per la modifica dei dati, però qui ho due problemi che non ho capito come risolverli, mi spiego partendo dal principio
1) Con la procedura "Inserisci i dati", il cognome e nome vengono riportati in maiuscolo, perché è così che voglio nella tabella, ed il calcolo delle ore viene dopo l'acquisizione, viene svolto correttamente.
2) Se richiamo i dati dalla maschera "Modifica", e faccio un cambiamento al nome oppure cognome, la correzione avviene però viene riscritta in minuscolo e non maiuscolo, poi se faccio una correzione in qualsiasi campo "Ore", nella tabella viene riportato un formato diverso e mi sballo tutti calcoli "vedi ultima riga del file messo in allegato per fare test". E' tutto il pomeriggio che ci sbatto la testa ma non ho capito come risolvere la cosa :crazy: .

Poi volevo implementare la maschera "Modifica" di un nuovo tasto che ho chiamato "Nuova Ricerca", in realtà quest'ultimo dovrebbe funzionare in questo modo:
1) Faccio la prima ricerca ed al di là che modifico qualcosa, dopo aver cliccato sul tasto "Conferma", il tasto "Nuova Ricerca" viene abilitato.
2) Cliccando adesso su questo tasto dovrei attivare una funzione nella nuova macro chiamata "refresh" che oltre a rimettermi a pulito tutti i campi, mi dia la possibilità di richiamare nella "combobox Ricerca" i dati cambiati antecedentemente. Al momento questa cosa viene realizzata chiudendo e riaprendo la maschera, mentre mi farebbe piacere realizzarla in quest'altro modo.

Per il momento sono riuscito a realizzare solo il primo punto, per il secondo è possibile sapere come si fa.

Grazie
Allegati
DialogoOK scrivere in tabella.ods
(25.93 KiB) Scaricato 84 volte
OpenOffice 3.3 SU WINDOWS 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro apre Form Dati

Messaggio da patel »

sanraff ha scritto: 2) Se richiamo i dati dalla maschera "Modifica", e faccio un cambiamento al nome oppure cognome, la correzione avviene però viene riscritta in minuscolo e non maiuscolo...
basta confrontare le 2 macro. in quella dell'inserimento hai utilizzato UCASE
sanraff ha scritto: 1) Faccio la prima ricerca ed al di là che modifico qualcosa, dopo aver cliccato sul tasto "Conferma", il tasto "Nuova Ricerca" viene abilitato.
2) Cliccando adesso su questo tasto dovrei attivare una funzione nella nuova macro chiamata "refresh" che oltre a rimettermi a pulito tutti i campi, mi dia la possibilità di richiamare nella "combobox Ricerca" i dati cambiati antecedentemente. Al momento questa cosa viene realizzata chiudendo e riaprendo la maschera, mentre mi farebbe piacere realizzarla in quest'altro modo.
non ho capito bene, io vedo che dopo aver cliccato su conferma non c'è bisogno di uscire ma è possibile fare una nuova ricerca tramite combo
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Macro apre Form Dati

Messaggio da sanraff »

Ciao patel, l'avevo fatto il confronto fra le due macro, però in quella riferita alla "macro modifica" non so dove va piazzato correttamenre "UCase", infatti prima di riscrivere al forum avevo fatto un paio di tentativi ma tutti andati a non buon fine.

Poi come faccio a risolvere questa cosa non di poco conto?
sanraff ha scritto:2) Se richiamo i dati dalla maschera "Modifica", e faccio un cambiamento al nome oppure cognome, la correzione avviene però viene riscritta in minuscolo e non maiuscolo, poi se faccio una correzione in qualsiasi campo "Ore", nella tabella viene riportato un formato diverso e mi sballo tutti calcoli "vedi ultima riga del file messo in allegato per fare test". E' tutto il pomeriggio che ci sbatto la testa ma non ho capito come risolvere la cosa
E per finire
patel ha scritto:1) Faccio la prima ricerca ed al di là che modifico qualcosa, dopo aver cliccato sul tasto "Conferma", il tasto "Nuova Ricerca" viene abilitato.
2) Cliccando adesso su questo tasto dovrei attivare una funzione nella nuova macro chiamata "refresh" che oltre a rimettermi a pulito tutti i campi, mi dia la possibilità di richiamare nella "combobox Ricerca" i dati cambiati antecedentemente. Al momento questa cosa viene realizzata chiudendo e riaprendo la maschera, mentre mi farebbe piacere realizzarla in quest'altro modo.
patel ha scritto:non ho capito bene, io vedo che dopo aver cliccato su conferma non c'è bisogno di uscire ma è possibile fare una nuova ricerca tramite combo
Mi spiego meglio
Ammettiamo di aver cambiato il nome e cognome della seconda riga. Dopo aver modificato i parametri, cliccato sul tasto "Conferma" e lasciato aperta la maschera, se vado a ricercare dalla combobox i dati modificati, all'interno trovo in memoria sempre quelli vecchi e non quelli nuovi.
Esempio, io richiamo il nome minny e lo modifico con pluto, se non chiudo e riapro la maschera, nella combobox resta in memoria minny, quindi non mi dà la possibilità di capire se la modifica è stata acquisita, a meno che io non vado a ricercarla nella tabella sottostante, però immaginati di dover scorrere la visualizzazione di più di cento nomi, mi sembra una soluzione improponibile; quindi avevo pensato di creare un pulsante "Nuova Ricerca" e di adoperarlo per il "refresh", però non so come si scrive la macro.

Se non sono stato chiaro, prova a fare test, così ti rendi meglio conto, grazie
OpenOffice 3.3 SU WINDOWS 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro apre Form Dati

Messaggio da patel »

sanraff ha scritto:l'avevo fatto il confronto fra le due macro, però in quella riferita alla "macro modifica" non so dove va piazzato correttamenre "UCase", infatti prima di riscrivere al forum avevo fatto un paio di tentativi ma tutti andati a non buon fine.
hai provato così ?

Codice: Seleziona tutto

sub ScriviModifiche
oDoc = ThisComponent
oSheet = oDoc.sheets(0) 

  oSheet.getCellRangeByName("B" & MyCounter).String = UCASE(dlg.getControl("TextField1").Text)
  oSheet.getCellRangeByName("D" & MyCounter).String = UCASE(dlg.getControl("TextField2").Text)
  oSheet.getCellRangeByName("F" & MyCounter).String = dlg.getControl("DateField1").Text   
  oSheet.getCellRangeByName("H" & MyCounter).String = dlg.getControl("TimeField1").Text
  oSheet.getCellRangeByName("I" & MyCounter).String = dlg.getControl("TimeField2").Text 
  oSheet.getCellRangeByName("M" & MyCounter).String = dlg.getControl("TimeField3").Text 
  oSheet.getCellRangeByName("N" & MyCounter).String = dlg.getControl("TimeField4").Text 
  call riempicombobox 
questa ti aggiorna anche la combo senza bisogno di uscire
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Macro apre Form Dati

Messaggio da sanraff »

Ciao patel, si avevo provato in quel modo, commettendo l'errore di non posizionare correttamente le parentesi tonde, quindi il sistema mi dava errore
Per quanto riguarda l'istruzione "call riempicombobox", avevo provato ad inserirla nella sub del nuovo pulsante "Nuova Ricerca", solo che cliccando su di esso, invece di fare il refresh, mi chiudeva la maschera di dialogo, quindi ho tolto l'istruzione e sono andato a tentativi, ma con scarsi risultati.

Adesso dovrei risolvere solo questo problema
sanraff ha scritto:2) ..... poi se faccio una correzione in qualsiasi campo "Ore", nella tabella viene riportato un formato diverso e mi sballa tutti i calcoli "vedi ultima riga del file messo per fare test"
.

Hai qualche suggerimento in merito per risolvere il problema??.
Io ho già provato a modificare la formattazione all'interno della tabella, però se faccio così non mi prende correttamente i dati dalla maschera "Inserisci", se invece allineo quest'ultimi con la tabella, non mi prende bene quelli della maschera modifica.

grazie
OpenOffice 3.3 SU WINDOWS 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro apre Form Dati

Messaggio da patel »

a me non lo fa però uso Libre office, fai attenzione che nella maschera del pomeriggio ora ingresso e ora uscita sono invertite
Allegati
DialogoOK scrivere in tabella.ods
(25.32 KiB) Scaricato 82 volte
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro apre Form Dati

Messaggio da patel »

modifica così

Codice: Seleziona tutto

sub ScriviModifiche
oDoc = ThisComponent
oSheet = oDoc.sheets(0) 

  oSheet.getCellRangeByName("B" & MyCounter).String = UCASE(dlg.getControl("TextField1").Text)
  oSheet.getCellRangeByName("D" & MyCounter).String = UCASE(dlg.getControl("TextField2").Text)
  oSheet.getCellRangeByName("F" & MyCounter).value = cdate(dlg.getControl("DateField1").Text)
  oSheet.getCellRangeByName("H" & MyCounter).value = cdate(dlg.getControl("TimeField1").Text)
  oSheet.getCellRangeByName("I" & MyCounter).value = cdate(dlg.getControl("TimeField2").Text)
  oSheet.getCellRangeByName("M" & MyCounter).value = cdate(dlg.getControl("TimeField3").Text)
  oSheet.getCellRangeByName("N" & MyCounter).value = cdate(dlg.getControl("TimeField4").Text)
  call riempicombobox  
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Macro apre Form Dati

Messaggio da sanraff »

Bravissimo, adesso funziona, ma pensa te, hai capito cosa vuol dire avere una persona che ti spiega le cose?, tu insegni ed io apprendo per adesso e per il futuro, da solo non sarei riuscito a fare niente :super:

Un'ultima cosa e poi metto risolto
Nella macro modifica, ho messo tanti "disabilita a Cognome, Nome ecc.. "
Domanda la stessa cosa come posso scriverla in una sola sub con il costrutto "If" oppure "Select"?, io ho provato però quando passo da un campo testo all'altro si blocca tutto mentre se lo associo ad ogni singola macro chiaramente funziona.

Cosa voglio ottenere
Dopo aver modificato il dato nella casella, quando passo in un'altra casella con il tasto "tab", quella in cui ho modificato il dato si deve disabilitare in automatico.
Al momento questa cosa funziona perché come ho detto prima, ad ogni casella ho associato la sua macro ( per il momento solo a Cognome e Nome, poi provvederò ad estendere la cosa).
E' possibile ottenere la stessa cosa scrivendo solo una sub?

grazie
OpenOffice 3.3 SU WINDOWS 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro apre Form Dati

Messaggio da patel »

non capisco a cosa ti serve disabilitare i campi, normalmente si disabilitano i pulsanti, comunque non credo si possa fare con una sola sub.
Il bello delle maschere è che puoi saltare a modificare dove vuoi e se sbagli ci ritorni sopra.
E' la prima volta che mi cimento seriamente in un form abbastanza completo e quindi sto imparando anch'io insieme a te, quindi non ti peritare a fare domande.Il prossimo passo dovrebbe essere quello di seguire il consiglio di Lupogrigio e fare una modulo unico con solo 2 form in modo da eliminare le sub ridondanti.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Macro apre Form Dati

Messaggio da Gaetanopr »

sanraff ha scritto: Dopo aver modificato il dato nella casella, quando passo in un'altra casella con il tasto "tab", quella in cui ho modificato il dato si deve disabilitare in automatico.
Al momento questa cosa funziona perché come ho detto prima, ad ogni casella ho associato la sua macro ( per il momento solo a Cognome e Nome, poi provvederò ad estendere la cosa).
E' possibile ottenere la stessa cosa scrivendo solo una sub?
grazie
La macro l'hai associata all'evento Testo modificato, quindi non credo ti funzioni, in quanto alla prima lettera modificata viene disabilitato il controllo.
Ti faccio pure notare che la macro da te usata presenta le prime due righe che sono alquanto inutili, fai riferimento al documento e al foglio, questo non occorre per disabilitare il campo di testo
Sub Disabilita_Cognome
oDoc = ThisComponent
oSheet = oDoc.sheets(0)

dlg.getControl("TextField1").Enable = false
end sub
patel ha scritto:...., comunque non credo si possa fare con una sola sub.
Si può fare, ma come detto da patel non è funzionale affatto, se vuoi ritornare su un campo già trattato ti tocca chiudere la finestra di dialogo e riaprila.
Comunque allego ugualmente il file con la macro per disabilitare i controlli "DisabilitaCtl" associata all'evento "perdita del punto focale".
Anch'io creerei un unico Form funzionante a Step, ma al momento credo tu debba ancora digerire bene quello imparato fino adesso.
Per altre problematiche sei pregato di aprire nuovi post con titoli più specifici e inerenti.
Allegati
DialogoOK scrivere in tabella (2).ods
(26.98 KiB) Scaricato 111 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro apre Form Dati

Messaggio da patel »

Bisogna riconoscere che non si trovano spesso utenti desiderosi di apprendere come sanraff, la maggior parte sono interessati solo alla soluzione
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Macro apre Form Dati

Messaggio da Gaetanopr »

Concordo, oltretutto i suoi post sono sempre interessanti.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Rispondi