Formulario con Query con più ricerche

Discussioni sulle caratteristiche di database
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Formulario con Query con più ricerche

Messaggio da mirabellomusic »

come devo fare per creare la macro? E ovviamente devo cambiare i campi della tabella storico come hai fatto tu? Mi sembra che mettesti string la colonna termine turno
Open Office 4.1.7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con Query con più ricerche

Messaggio da charlie »

mirabellomusic ha scritto:come devo fare per creare la macro?
viewtopic.php?f=29&t=10531
Pagine iniziali ...
mirabellomusic ha scritto:E ovviamente devo cambiare i campi della tabella storico
charlie ha scritto: Ho dovuto apportare alcune modifiche:
  • Il formulario 'Inserimento' è stato abilitato alla modifica dei record
  • Nella tabella 'Storico' sono stati modificati alcuni tipi di campo perché errati (es. testo per numeri) o per esigenze di esecuzione dalla macro ('Termine turno' è ora tipo testo, ma per indicare l'ora dovrebbe andare bene lo stesso).
  • È stata eliminata la 'Digitazione necessaria' di tutti i campi
  • Sono state eliminate le relazioni fisse fra tabelle
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Formulario con Query con più ricerche

Messaggio da mirabellomusic »

Sono state eliminate le relazioni fisse fra tabelle. Cosa dovrei fare qui?
Open Office 4.1.7
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Formulario con Query con più ricerche

Messaggio da mirabellomusic »

Ho cambiato alcuni nomi campi nella macro che erano sbagliati, ora mi da questo errore (ho eliminato tutte le relazioni fra tabelle)... non so cosa possa essere
Allegati
Annotazione 2020-08-05 110007.png
Annotazione 2020-08-05 110007.png (7.88 KiB) Visto 1795 volte
Open Office 4.1.7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con Query con più ricerche

Messaggio da charlie »

Di solito è unmessaggio che si riferisce alla modifica di un campo relazionato con un'altra tabella. Sicuro di aver cancellato le relazioni?
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con Query con più ricerche

Messaggio da charlie »

Nuova versione con codice macro suggerita da @F3K Total sul forum inglese (che ringrazio :bravo: ).
Funziona subito con qualsiasi tipo di campo (testo, decimale, intero, data, ora) senza necessità di controllare i nomi campo e senza eliminare le relazioni fra le tabelle.
Funziona direttamente sul tuo file originale.

Codice: Seleziona tutto

Sub CopyRecord_F3K
    oForm = thisComponent.drawpage.forms.MainForm
    oColumns = oForm.Columns
    dim aData (1,oColumns.count - 1) as Variant
    for i = 1 to oColumns.count - 1 'Start at column 1 because Column 0 is the PK Autovalue, would lead to an error
        oColumn = oColumns(i)
        select case oColumn.TypeName
            case "VARCHAR"
                value = oColumn.getstring
            case "INTEGER"
                value = oColumn.getInt
            case "TIME"
                value = oColumn.getTime
            case "DATE"
                value = oColumn.getDate
            case "DECIMAL"
                value = oColumn.getDouble
        end select
       aData(0,i) = value
       aData(1,i) = oColumn.wasNull
    next i
    oForm.movetoInsertRow
    for i = 1 to oColumns.count - 1
        oColumn = oColumns(i)
        if aData(1,i) = true then    'the column was empty
            oColumn.updateNull
        else
        select case oColumn.TypeName
           case "VARCHAR"
               oColumn.updatestring(aData(0,i))
           case "INTEGER"
               oColumn.updateInt(aData(0,i))
           case "TIME"
               oColumn.updateTime(aData(0,i))
           case "DATE"
               oColumn.updateDate(aData(0,i))
           case "DECIMAL"
               oColumn.updateDouble(aData(0,i))
       end select
       endif
    next i
    oForm.InsertRow
End Sub
Allegati
Sala_operativa.odb
(63.06 KiB) Scaricato 129 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Rispondi