Deze pagina legt uit hoe u een toekomstige prijs kunt instellen, d.w.z. een prijsveld in de artikelfiche kunt wijzigen, op een specifieke datum, zonder tussenkomst van de gebruiker. Dit kan nodig zijn wanneer nieuwe prijzen nodig zijn op een bepaalde datum en een website die verbonden is met Mercator deze prijzen waarschijnlijk buiten de kantooruren toont.
Het onderstaande voorbeeld is opzettelijk vereenvoudigd. Het kan gemakkelijk worden aangepast aan meer uitgebreide situaties.
De basisprijs exclusief BTW (S_PRIX_HT) wordt op 1 januari 2023 gewijzigd in een nieuwe waarde.
1. Voeg een nieuwe kolom toe voor deze prijs, bijvoorbeeld
alter table STOCK add S_PRIX_HT_2023 float not null default 0
Dit nieuwe veld wordt dan toegevoegd aan de parameters van de artikelfiche. Het kan worden ingevuld door handmatige codering, via het menu "Artikelen > Prijzen bijwerken" of door Excel/XML-bestanden te importeren.
2. Planning van de uitvoering van een SQL-query
De volgende query zal de gevraagde bijwerking uitvoeren :
update STOCK set S_PRIX_HT = S_PRIX_HT_2023 where S_PRIX_HT_2023 <> 0
Het moet echter in de toekomst op een bepaalde datum (1/1/2023) worden uitgevoerd.
Gebruik hiervoor de Mercator Code Editor en plak in een SQL-tabblad deze query en voer vervolgens "Gepland Uitvoeren" uit.
Mercator vraagt dan de gewenste datum en tijd van uitvoering en sa-authenticatie op de SQL-server.
Deze geplande query wordt uitgevoerd door de SQL Agent. De SQL Agent moet dus geïnstalleerd en actief zijn op de SQL Server. Als de SQL Agent niet draait op het moment dat de geplande query wordt gemaakt, wordt een waarschuwing gegeven. De geplande query wordt aangemaakt, maar wordt niet uitgevoerd als SQL Agent op het gekozen tijdstip niet actief is.
In SQL Server client tools zijn geplande runs zichtbaar in dit knooppunt:
Dit soort werk omvat altijd twee stappen:
- de uitvoering van een opgeslagen procedure met de oorspronkelijke SQL-query : MERCATOR_VERTALINGEN.dbo.SCHEDULED_SP_ONCE_202301010000_8GXE9IHRXR
- de verwijdering van deze opgeslagen procedure
Het is gemakkelijk om de correcte uitvoering van een geplande opdracht te controleren door met de rechtermuisknop op de opdracht te klikken en "Geschiedenis bekijken" te kiezen.
Opmerkingen :
- SQL Agent is niet beschikbaar met de Express-versie van SQL Server. Deze Mercator-functie is in dit geval dus niet beschikbaar.
- In dit stadium van ontwikkeling is dit niet compatibel met SQL Azure.
- Voordat de geplande query wordt gemaakt, test Mercator de query onder transactie en rolt (rollback) deze onmiddellijk terug. Dit voorkomt het maken van geplande queries met onjuiste SQL-code (dit is impliciet, u moet niet de knop "Transactie starten" in de code-editor gebruiken).
- Met SQL Agent kunnen SQL-query's op de database worden uitgevoerd. Het is in deze context dus niet mogelijk om Mercator C# code uit te voeren. Bijgevolg is het bijvoorbeeld niet mogelijk de uitvoering van prijsscripts na deze geplande query te automatiseren. Indien nodig zal de update SQL query de gebruikelijke wijzigingen in de prijsformules moeten aanbrengen.
- Als je meerdere verzoeken onder een transactie wilt laten uitvoeren, moet je deze verzoeken inkaderen met BEGIN TRAN en COMMIT TRAN. Bijvoorbeeld :
BEGIN TRAN
update...
update...
COMMIT TRAN
Sinds versie 10.10.31 van MercatorEditor.dll ondersteunt Mercator deze periodiciteit ook:
- Dagelijks
- Wekelijks
- Maandelijks
- Maandelijks ten opzichte van een dag