Pagina 3 di 3

Re: Formulario con Query con più ricerche

MessaggioInviato: martedì 4 agosto 2020, 16:54
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

Re: Formulario con Query con più ricerche

MessaggioInviato: martedì 4 agosto 2020, 17:34
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

Re: Formulario con Query con più ricerche

MessaggioInviato: mercoledì 5 agosto 2020, 9:45
da mirabellomusic
Sono state eliminate le relazioni fisse fra tabelle. Cosa dovrei fare qui?

Re: Formulario con Query con più ricerche

MessaggioInviato: mercoledì 5 agosto 2020, 10:00
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

Re: Formulario con Query con più ricerche

MessaggioInviato: mercoledì 5 agosto 2020, 10:34
da charlie
Di solito è unmessaggio che si riferisce alla modifica di un campo relazionato con un'altra tabella. Sicuro di aver cancellato le relazioni?

Re: Formulario con Query con più ricerche

MessaggioInviato: mercoledì 5 agosto 2020, 13:44
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   Espandi visualeStringi visuale
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