Hoe lees ik teksten uit?

Status
Niet open voor verdere reacties.

BartSr

Gebruiker
Lid geworden
26 aug 2008
Berichten
240
Ik ben al een tijdje bezig met een ogenschijnlijk simpel probleem.
De bedoeling is alle gebruikte teksten in een tabel I_txt te plaatsen en ze direct na het openen van de database in een dim txt() te plaatsen, die overal in de database moet kunnen worden uitgelezen.
Wie weet raad?
 
Ik zou er sowieso geen variabele voor gebruiken, en ze uit de tabel op te halen als je ze nodig hebt. Dat mag qua performance geen enkel probleem zijn. Ik neem aan dat we het hier over Boeket hebben?
Mocht je tóch iets willen, zet de handel dan in een TempVar. Die kun je overal gebruiken zonder dat je bang hoeft te zijn dat de waarde verloren gaat. Iets wat bij variabelen een reëel risico is.
 
Ik probeer nu een oplossing waarbij ik, waar nodig, deze functie aanroep
Public Function fnt(NR As Integer)

DoCmd.RunSQL "SELECT DISTINCTROW I_txt.TXT FROM I_txt WHERE ID = " & NR

End Function
De tabel heet I_txt met de velden ID en TXT. Het antwoord moet het betreffende veld TXT zijn.
Maar die werkt niet. Wat doe ik fout?
 
Laatst bewerkt:
RunSQL kun je alleen gebruiken voor actiequeries. Dus een Insert query, of een Delete query. Wil je een query openen met een resultaat, dan moet je Docmd.OpenQuery gebruiken. Dat werkt dan alleen weer op bestaande queries, dus je moet er eerst voor zorgen dat die query er is. Zelf doe ik dat door een tijdelijke query te maken, waarvan ik met de QueryDefs collectie dan steeds de SQL verander. Die tijdelijke query kun je dan te allen tijde weer openen. Of je zo zou moeten werken, is uiteraard weer een hele andere vraag. Ik zie eerlijk gezegd nog steeds het nut niet van je constructie.
 
Ben toch benieuwd a) of het voor Boeket is, en b) wat je dan van plan was :D.
 
Ben toch benieuwd a) of het voor Boeket is, en b) wat je dan van plan was
Ik wilde een poging doen mijn boekhoudprogramma Boeket te converteren naar Linux in bv Libre Office Gambas of Kexi. En daarom leek het me beter de taalelementen er uit te halen
 
Ah, dat zou best kunnen. Ik heb geen kennis van Libre Office; wist zelfs niet dat daar een database programma in zit. Laat staan hoe dat werkt :). Wellicht beter om de vraag dan in het Overige Office forum te stellen, daar hangen de Linux mensen doorgaans uit :D.
 
Ik wil toch nog een poging doen.....:evil:
en schreef deze funktie

Public Function fnt(NR As Integer)

DoCmd.OpenQuery "qryTxt"
DoCmd.GoToRecord , NR

End Function
Als ik die test , door in een direct scherm fnt(3) in te toetsen,geeft die: fout 2489 het object 3 is niet geopend. De qryTxt haalt alle records op, ik wilde nu record 3 zien, bestaand uit Itxt.Id=3 en Itxt.txt= Balans. Wat doe ik fout?
 
Laatst bewerkt:
GoToRecord gaat naar een recordnummer (in jouw voorbeeld het derde record). Dan moet dat er wel zijn. Daarnaast speelt nog dat, in een recordset van bijvoorbeeld 10 records, er altijd wel een record #3 is, maar dat dat elk record zou kunnen zijn, afhankelijk van de sortering van je recordset. Dus om naar het derde record gaan is dan een beetje een loterij.
Beter is het om met FindRecord te werken, waarbij je dus een specifiek record zoekt op basis van een waarde in een specifiek veld, dat je dan dus ook moet benoemen.
 
Als ik dit zo doe, gaat de functie op zich wel goed, maar hoe krijg ik het gewenste tekstveld nu terug?
Public Function fnt(NR As Integer)
DoCmd.OpenTable "I_txt"
DoCmd.FindRecord NR
DoCmd.Close
End Function
 
Je geeft geen veldnaam mee. Overigens (dat krijg je er van als je alles uit het hoofd doet) zou je FindFirst moeten gebruiken in de recordset. Als je op het kernwoord gaat staan en op <F1> drukt, krijg je een voorbeeldje van de juiste syntax.
 
Beste OctaFish,
Zou je mij willen vertellen hoe en waar in de eerder getoonde functie ik de gewenste veldnaam -txt- moet meegeven om de inhoud van dat veld terug te krijgen? Met het helpscherm F1 kom ik niet verder
Bart
 
Beste Octafish,
Om het wat duidelijker te maken:
het gaat om deze tabel
Schermafdruk van 2020-12-26 15-50-35.png
en deze -incomplete- funktie
Code:
Public Function fnt(NR As Integer)
DoCmd.OpenTable "I_txt"
DoCmd.FindRecord NR
???
DoCmd.Close
End Function
Roep ik deze nu aan met fnt(2), dan wil ik terugontvangen rptRekeningschema
Waar vraagtekens staan moet komen fnt= xxx, maar wat komt er voor xxx te staan?
Bart
 
Laatst bewerkt:
De bijlage is niet te openen, kun je hem nog een keer toevoegen?
 
BartSr,

probeer deze maar eens



Code:
Public Function fnt(NR As Integer)
dim plrs as string

plrs = DLookup("txt", "I_txt", "id = " & NR)

msgbox plrs

End Function

gr. Cor
 
Bedankt, Cor.
Die werkt, maar ik heb 'm iets aangepast, en wel als volgt:
Public Function fnt(NR As Integer)
fnt = DLookup("txt", "I_txt", "id = " & NR)
End Function
 
Hallo Octafish, (cc Cor)
Nu ik de oplossing van Cor wil toepassen
Code:
DLookup("txt", "I_txt", "id = " & NR)
, zie ik dat dit niet werkt in aanpassen van veldnamen,
Schermafbeelding 2020-12-27 121558.png
dus maak ik er toch maar geen gebruik van.
Al met al toch weer wel wat wijzer geworden....
Bart
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan