Kan dit? Een uitdaging,

Status
Niet open voor verdere reacties.

eltee

Gebruiker
Lid geworden
17 aug 2009
Berichten
16
Ik heb een uitdaging, niet helemaal waar Access voor bedoeld is maar het werkt wel. Toch een vraagje.

In een formulier heb ik de volgende velden

RecordID INT NOT NULL,
EventID VARCHAR(5),
Datum DATETIME NOT NULL,
Sender VARCHAR(20) NOT NULL,
Direction VARCHAR(10),
Receiver VARCHAR(20),
ShortItemText NVARCHAR(2000),

Alle velden staat horizontaal achter elkaar, Bij het drukken van "SEND" wordt er een nieuwe regel gemaakt.
Nieuwe EventID = EventID + 1, er moet een nieuwe regel worden ingevoegd aan de bovenkant. De bovenste regel wordt nu regel 2 etc...
In ShortItemText kan commentaar worden gezet in tot maximaal 2000 tekens. Op het Formulier moet de hele tekst te lezen zijn, hoogte aanpassing op basis van
het aantal regels.

Hoe kan ik dit voor elkaar krijgen ?
 
Weet je zeker dat dit een Access probleem is? Een standaard tekstveld (korte tekst) heeft 256 tekens, en een tekstveld met Lange tekst een kleine 65.000 tekens. Dus waar je die 2000 vandaan haalt? Maar afgezien daarvan: op een formulier kun je aangeven dat een veld automatisch groter of kleiner kan worden gemaakt, maar dat werkt niet zo lekker op een doorlopend formulier. Dat werkt wél prima op een rapport. Je zou een popup formulier kunnen maken met een groot tekstveld waarin je de tekst van dat ene veld kunt zien/muteren op het formulier.
 
Aan de data types te zien is je back-end een SQL database. De nieuwe event-ID kan je automatisch laten genereren door een sequence aanmaken en deze te gebruiken om het tekstveld in te vullen. Je kan hiervoor een procedure aanmaken die het nieuwe record klaarzet. De volgorde waarin de rijen getoond worden hangt van de sorteervolgorde af, dus als je aflopend sorteert op de event-ID staat de meest recente vanboven.
 
Maar geen oplossing voor het automatisch vergroten van het tekstvak. Wacht nog even op reactie van TS voordat ik daar verder op doorga :).
 
Om de hoogte aan te passen, eerst de simpele manier: maak je tekstvak een 100 tekens langs en 5 regels hoog. Dan heb je al 500 tekens, ik twijfel eraan dat de meeste teksten langer zijn dan dat. Activeer dan de vertikale scrollbars, zodat je bij langere teksten door de tekst kan scrollen.
Je kan ook een programmatie toevoegen die je triggert bij de ONCurrent event en die de hoogte van het formulier gaat aanpassen naargelang de hoogte van de tekst. Maar dan krijg je wel een tekstvak dat van hoogte verandert telkens je door de recordsets bladert en door de gebruikers als hinderlijk kan ervaren worden.
 
Dat is geen oplossing voor het automatisch aanpassen van de hoogte. Persoonlijk zou ik dat ook niet willen, en ook niet wat jij voorstelt: een vaste hoogte. Of bij OnCurrent. Ziet er in mijn optiek heel lelijk uit op een doorlopend formulier, en neemt veel teveel ruimte in beslag. Ik gebruik in dat soort situaties dus altijd een pop-up.
 
Hoe dan ook, op de vraag kan dit? antwoorden we: ja dat kan.
 
Nee, dat kan niet, want zodra je een record activeert met maar één regeltje tekst, worden alle tekstvakken verkleind. Dus óók de records met 2000 tekens. En weer vergroot bij een veld met meer tekst. Nog afgezien van het lelijke effect van het op en neer springen van de recordhoogtes. Gebruik ofwel een tekstvak met meerdere regels (en een verticale schuifbalk) of een pop-up formulier. Hou je formulieren strak.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan