Hoe gegevens invoeren in de roosters die werden toegevoegd aan de parameterinstelling van de informatiebestanden ?

0000001769     -      21-07-2022

In Mercator is het mogelijk om gegevens in te voeren in de roosters die werden toegevoegd aan de parameterinstelling van de informatiebestanden, m.a.w. de roosters die werden toegevoegd via "Tools / Schermen Informatiebestanden / Parametrering".

Om een rooster "read-write" te maken, moet het voldoen aan deze voorwaarden:

  • het rooster moet zijn toegevoegd op dezelfde manier als een "read-only"-rooster;
  • één enkele tabel kan worden geactualiseerd via dit rooster. De naam van deze tabel moet worden vermeld in de eigenschap TableToUpdate. Doorgaans gaat het hier om een tabel toegevoegd aan de databank;
  • deze tabel moet de volgende velden bevatten:
    • id: char(10): bevat een door Mercator gegenereerde, unieke, willekeurige waarde;
    • id_sig: char(10): link naar de identificatiecode van de actieve fiche in het informatiebestand. sig moet worden vervangen door de naam van het informatiebestand. Bijvoorbeeld voor de klanten: ID_CLI;
    • volgorde: numeriek veld voor de opslag van de volgorde van de lijnen (door Mercator gegenereerde waarde);
  • in de SQL-opdracht moeten de wijzigbare velden tussen [ ] staan, deze opdracht moet minstens de velden id, id_sig en volgorde omvatten, deze zullen niet weergegeven worden.

Een "read-write"-rooster is te herkennen aan de knoppen voor het toevoegen, invoegen en schrappen van lijnen die onderaan in dit rooster staan. Als deze knoppen niet voorkomen, betekent dit dat aan minstens een van de bovenstaande voorwaarden niet is voldaan.

Filteren en opzoeken

In de "filter"-modus of bij een "multicriteria"-zoekopdracht in de informatiebestanden kunnen de "read-write"-roosters worden gebruikt om registraties in het basisinformatiebestand te filteren/zoeken. Om te filteren op basis van gegevens gevonden in de tabel "enfant" die via dit rooster wordt aangevuld, volstaat het één of meer lijnen toe te voegen aan dit rooster wanneer Mercator in "filter"-modus is (knop "Filteren" weergegeven).

  • Als op eenzelfde lijn meerdere velden zijn ingevuld, worden deze in een where-clausule gecombineerd met de logische operator AND.
  • Als meerdere lijnen zijn ingevoerd, worden de where-clausules van elke lijn gecombineerd met de logische operator OR.

Uiteraard kan het zoeken op basis van gegevens uit deze roosters onbeperkt worden gecombineerd met het standaard zoeken in de verschillende zones van het informatiebestand. Zo is het ook mogelijk om zoekopdrachten te combineren die een beroep doen op verschillende "read-write"-roosters. Alle afspraken voor het zoeken op basis van meerdere criteria in de standaardzones van het informatiebestand (gebruik van ..., %, =) gelden ook in deze roosters.

Opmerkingen

  • Bij het definiëren van de toegevoegde tabel raden we aan om dezelfde veldtypes te gebruiken als de gebruikelijke Mercator-types. Daarbij moet elk van de velden "NOT NULL" worden verklaard en telkens een blanco standaardwaarde hebben.
  • Het is mogelijk dat de SQL-opdracht verwijst naar meerdere tabellen (links tussen tabellen). Maar aangezien slechts één tabel "read-write" is, kunnen enkel de velden van die tabel tussen [ ] worden geplaatst.
  • Wij raden ten sterkste aan dat de primaire sleutel van de toegevoegde tabel ID_SIG,ID zou zijn.
  • Wij raden ten sterkste aan om een index te creëren op het veld ORDRE.
  • Wij raden ten sterkste aan om een foreign key (relatie) te creëren tussen ID_SIG en de ID van de basistabel van het overeenstemmende informatiebestand. Activeer daartoe in deze primaire sleutel de opeenvolging van schrappingen en de opeenvolging van updates (anders zal de functionaliteit die toelaat om de primaire sleutel te veranderen via TOOLS van Mercator niet meer werken).
  • Wij hebben niet overwogen om via dit proces standaardtabellen van Mercator aan te vullen zoals documenten, boekhoudkundige stukken of andere informatiebestanden.
  • Deze functionaliteit is beschikbaar in alle informatiebestanden van Mercator.

 


 

Een voorbeeld

1. We nemen een tabel CLIEXT toegevoegd in de Mercator-databank op de SQL-server. Deze tabel kan worden gecreëerd met de grafische interface van de SQL-tools of met het volgende SQL-script:

CREATE TABLE [dbo].[CLIEXT](
                [ID_CLI] [char](10) NOT NULL default '',
                [ID] [char](10) NOT NULL default '',
                [ORDRE] [int] NOT NULL default 0,
                [CHAMP1] [varchar](50) NOT NULL default '',
                [CHAMP2] [varchar](50) NOT NULL default '',
                [CHAMP3] [varchar](50) NOT NULL default '',
                [CHAMP4] [bit] NOT NULL default 0,
                [DATE] [datetime] NOT NULL default '19000101',
CONSTRAINT [PK_CLIEXT] PRIMARY KEY CLUSTERED
(
                [ID_CLI] ASC,
                [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

ALTER TABLE [dbo].[CLIEXT] WITH CHECK ADD CONSTRAINT [FK_CLIEXT_CLI] FOREIGN KEY([ID_CLI]) REFERENCES [dbo].[CLI] ([C_ID]) ON UPDATE CASCADE ON DELETE CASCADE

CREATE INDEX ORDRE ON [dbo].[CLIEXT] (ORDRE)

 

2. Er wordt een rooster toegevoegd aan het informatiebestand Klanten. De eigenschap "Upd. table" van dit rooster wordt ingesteld op CLIEXT en haar SQL-opdracht.

select id_cli,id,ordre,[champ1],[champ2],champ3,[champ4],[date] from cliext where id_cli=@c_id order by ordre

Deze opdracht geeft aan dat de velden CHAMP1, CHAMP2, CHAMP4 en DATE gewijzigd kunnen worden. CHAMP3 zal "read-only" blijven.

 


Voor het opzetten van een link naar een informatiebestand, zie het tweede voorbeeld op deze pagina.