Avatar billede rookie44 Juniormester
01. december 2010 - 10:44 Der er 8 kommentarer og
1 løsning

VBA udfyldning af underformular

Jeg har en formular med tilhørende underformular.
Formularen viser et varenummer i feltet VisVarenummer. Varenummer fremkommer ved efteropdatering af listboxen "Styklisteoversigt".

Underformularen skal nu vise, hvad den valgte vare består af.
Jeg prøver at bruge følgende for at hente.
Jeg får en fejl med - der er for få parametre. der var ventet 1.
Tabellen T_MatrStyklist har 2 nøglefelter - Hovedvarenummer og Aktnr.

Set rstMatrStkList = mydb.OpenRecordset("SELECT * FROM [T_MatrStyklist]WHERE Me![VisVarenummer]= '" & Me![Styklisteoversigt] & "'")

Jeg vil samtidig gerne have det sorteret after stigende Aktnr. Her løber jeg sur i anvendelsen af ' og ".

Tilsidst vil jeg gerne have recordsettet indlæst i min underformularen.
Avatar billede neoman Novice
01. december 2010 - 11:01 #1
Hvis du vil vise records i en underformular, så sæt en query som recordsource  for underformularen. Querien kan du bygge op i querybuilderen - først vis alle records, og når det virker kan du sætte et WHERE kriterium på. Din SQL fejler, fordi 1. der er ikke blank mellem ] og WHERE, og derpå skal WHERE kriteriet referere til feltnavne som forekommer i den tabel/query som SQL'en skal køre på. Desuden, kun strings skal i '  - tal skal ikke omkapsles af '.
Avatar billede rookie44 Juniormester
01. december 2010 - 11:24 #2
Har rettet det. Nu prøver jeg med ORDER BY. Der er en fejl i syntaksen.

Set rstMatrStkList = mydb.OpenRecordset("SELECT * FROM [T_MatrStyklist] WHERE [Hovedvarenr]= '" & Me![Styklisteoversigt] & "' & ORDER BY & '" & [Aktnr] & "'")

Mener du at jeg skal lave select sætning i kilden til underformularen? i stedet for at lave et recordset.

Jeg håbede på at jeg kunne sige
Me!Minunderformular.Recordsource = rstMatrstkList
Avatar billede neoman Novice
01. december 2010 - 11:36 #3
Nej. Jeg mente at specificere kilden til underformularen som værende en query, der leverer de ønskede data.

Du kan vist godt sætte en formulars recordset til et du lige har genereret http://office.microsoft.com/en-us/access-help/recordset-property-HA001232787.aspx  . Jeg har ikke prøvet det selv.

Er der nogen årsag til at du ønsker at skrive kode til dette, fremfor at bruge de byggeblokke der er i Access? Mao: hvad hindrer dig i simpelthen at lave en query(forespørgsel) i querybuilderen, og sætte den som recordsource?
Avatar billede rookie44 Juniormester
01. december 2010 - 11:56 #4
Underformularen indeholder også nogle beregnede tal. Og så er det fordi jeg prøver at lave det som en client-server løsning, således at man henter data, og så er offline fra selve databasen.

Og så er det nok manglende erfaring i byggeblokkene fremfor kode.
Avatar billede neoman Novice
01. december 2010 - 12:22 #5
"Underformularen indeholder også nogle beregnede tal." ? Det gør den vel uanset hvilken datakilde den er beseret på? Eller er der nogle oplysninger som ikke er her?

"Og så er det fordi jeg prøver at lave det som en client-server løsning, således at man henter data, og så er offline fra selve databasen." Ikke forstået. Om du kører en query på en tabel i en underformular, som du forsøger på nu, eller baserer en formular på en query, som så udfører den, lyder ret meget af det samme. Medmindre der altså er flere oplysninger end angivet her.


"Og så er det nok manglende erfaring i byggeblokkene fremfor kode. " Prøv at bygge en query op i query builderen - det er ikke så svært, der findes jo Wizards til det meste. Desuden, så kan du ændre queriens visning til SQL, så kan du se hvordan SQL-sætningen bør se ud helt præcist. Jeg er doven anlagt, så bruger tit querybuilderen til at lave en query kun så jeg kan kopiere sql'en ind i min kode, når det passer bedre.
Avatar billede rookie44 Juniormester
01. december 2010 - 14:00 #6
Det er således at de indlæste data i underformularen skal kunne redigeres og tilføjes nye poster, og så skal de skrives tilbage i tabellen.

Hvordan finder man ud af hvor mange records der er efter redigering?

Jeg prøver at lave en Qyery som du skriver.
Avatar billede neoman Novice
01. december 2010 - 14:59 #7
"Hvordan finder man ud af hvor mange records der er efter redigering?" Svært at svare på, da det ikke fremgår hvor de data er henne, og hvad "redigering" går ud på præcist.

Når datakilden for en formular er en query (en opdatérbar en af slagsen) så kan man sagtens ændre i de forskellige felter for en post, eller tilføje/slette poster vha. formularen.

PÅ en formular med en datakilde giver Me.RecordSet.RecordCount for det meste det antal poster der nu måtte være tilknyttet.
Avatar billede rookie44 Juniormester
01. december 2010 - 15:40 #8
Jeg har prøvet med en Qyery. Den virker fint i dataarkvisning.

Men jeg får ingen data i underformularen. I hovedformularen har jeg et ubundetfelt der hedder VisVarenr, her indsætter jeg det varenr der skal vises. Det virker OK.
På underformularen har jeg sat overordnede felt til VisVarenummer og underordnede felt til Hovedvarenr (de skal være ens).
Avatar billede rookie44 Juniormester
31. december 2010 - 08:08 #9
Lukker spørgsmålet. Prøver en anden løsning
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester