Nieuw toegevoegd record niet (direct) zichtbaar

gevraagd 2020-01-27 16:52:48 +0100

Tom Kuipers gravatar image

updated 2020-01-27 16:53:40 +0100

Bij gebruik van een externe Firebird database in base wordt een nieuw toegevoegd record niet getoond na opslaan. Record wordt wel aangemaakt inclusief een autovalue voor primary key. Blijkbaar wordt de record-set in LO niet aangepast, want ook bij gebruik van navigatie-knoppen wordt het nieuwe record niet getoond. Het maakt niet uit of het gebruikte formulier voor enkelvoudige record of voor records in tabelvorm is gemaakt. Wanneer het formulier wordt gesloten en opnieuw geopend is het nieuwe record wel zichtbaar, inclusief gegenereerde sleutel.

Gebruik van reload commando in een macro gekoppeld aan een Form event "After record change" of "After record action" veroorzaakt een soort loop: de reload wordt steeds opnieuw geactiveerd, ook wanneer alleen een navigatie-knop wordt gebruikt zonder gegevens aan te passen.

Er wordt geen gebruik gemaakt van filtering en de record-source is de gebruikte tabel.

Gebruikte software: Windows 10 (laatste update), LibreOffice 6.3.4 (64bit), Firebird 3.0 extern gedefinieerd op dezelfde PC.

Met excuses voor de uitvoerige tekst, ik wilde zo compleet mogelijk zijn en kan niet ergens een antwoord vinden. Ik ben een redelijk nieuwe gebruiker van LO, have mercy.

bewerken retag markeer ongewenst sluiten samenvoegen verwijderen

Commentaren

Je bent niet duidelijk. Er zijn twee soorten Firebird "extern" - server en bestand. Welke gebruik je?

Had geen probleem met het gebruik van beide (geen automatische toename gebruikt bij het testen)

Ratslinger gravatar imageRatslinger ( 2020-01-28 05:51:52 +0100 )bewerken

Sorry Ratslinger, ik gebruik een Firebird database op de locale PC, die als server is gedefinieerd, om later de mogelijkheid te hebben de database eenvoudig op een andere machine te zetten.

De betreffende tabel is daarin gedefinieerd met trigger die de primary key met 1 ophoogt, dit werkt goed. In het formulier was de reload- macro gekoppeld aan het event After record change en After record action , die een reload van het formulier uitvoerd. De eerste gaat blijkbaar ook af bij een reload en veroorzaakt daardoor een loop. E.e.a. werkt nu wel, maar bij een wijziging van een bestaand record of invoegen nieuw wordt de "reload-macro" aangeroepen, zodat (in mijn geval) het eerste record uit de tabel wordt getoond en niet het zojuist aangepast/aangemaakte record. Heeft de opmerking "Geen automatische toename" hiermee te maken, die kan ik (nog) niet thuisbrengen? ( ik gebruik de engelstalige LO versie).

Overigens ...(meer)

Tom Kuipers gravatar imageTom Kuipers ( 2020-01-28 12:50:17 +0100 )bewerken

Het lijkt erop dat u het formulier opnieuw laadt, alleen om de verhoogde waarde te zien. Om het record alleen maar te laten invoeren, moet u macro's schrijven die specifiek zijn voor uw behoeften.

Ratslinger gravatar imageRatslinger ( 2020-01-28 21:05:09 +0100 )bewerken

Dat wilde ik inderdaad, niet zozeer om het nieuwe nummer te zien, maar ook als een soort bevestiging voor de gebruiker, die dan tevens de mogelijkheid heeft nog e.e.a. aan te passen. Bij een embedded database werkt dit tenslotte wel zo.... Ik heb ondertussen een macro geschreven die via een "select max(…)" sql het zojuist aangemaakte nummer ophaalt vergelijkt met het vorige hoogste nummer (global variable) en bij ongelijkheid het nieuwe nummer opslaat en in het formulier filter plaatst en dan een reload uitvoert. Omdat het formulier ook een zoekfunctie heeft kan de gebruiker daarmee het filter weer aanpassen of opheffen.
Het is wellicht wat omslachtig en verdient geen schoonheidsprijs, maar het werkt wel. Nogmaals dank voor je antwoord en uiteraard houd ik me aanbevolen voor een betere oplossing.

Tom Kuipers gravatar imageTom Kuipers ( 2020-01-29 13:53:38 +0100 )bewerken