29. november 2005 - 14:58Der er
30 kommentarer og 2 løsninger
Vis specifikt Projektnr fra knap i subform
Hej, Jeg har en form FrmAllData (qrySearch) m. en tabcontrol TabCtl0 som bl.a. har en pgProjectData, som har en FrmProjectData (qryProjectData)med child: ProjectID og Master ProjectID. Nu vil jeg gerne vise et specifikt ProjectID fra en "søgeform" FrmSearch med en subform FrmSearchSub med en knap, hvor jeg på OnClick Eventen har skrevet: stDocName = "FrmAllData" stLinkCriteria = "[ProjectID]=" & Me![ProjectID] DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormEdit Problemet er bare at den viser en ny tom FrmAllData, hvor den skulle have vist et specifikt ProjectID. Nogen der har en god idé?
Du skriver "med en subform FrmSearchSub med en knap..." Det er vel ikke sådan at du har ProjectID på selve formen og knappen i en subform? I så fald skal du refere til Me.Parent![ProjectID] i stLinkCriteria.
Det er nu afprøvet både før og efter lighedstegnet: Efter lighedstegnet: ingen virkning; før lighedstegnet: Enter parametervalue Me.Parent osv. Så det virkede ikke...
... prøv også lige: stDocName = "FrmAllData" stLinkCriteria = "[ProjectID]=4711" ' et eller andet ProjectID, der findes DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormEdit virker det?
ProjectID er feltet som er den unikke nøgle i min tabel TblProject. Dette felt er med i samtlige queries som jeg anvender og som danner basis for mine forme, så ja ProjectID ligger bl.a. i formen FrmProjectData og ja knappen med on Click eventen ligger i subformen som beskrevet ovenfor, håber dette giver en lille smule klarhed.
FrmProjectData er en slags Subform på FrmAllData. FrmSearch er min søgeform. FrmSearchSub er en subform til FrmSearch. På FrmSearchSub vises alle de Projectnumre der findes.
Jeg begynder at forstå din opstilling. Du har en liste med projektnumre på FrmSearchSub. I den samme subform er der en knap til at aktivere søgningen. Ved klik på knappen vil du åbne FrmAllData på det valgte projekt. Korrekt?
Hvis det ikke virker med "[ProjectID]=129", er der - som du siger - noget helt galt. - Er du sikker på at ProjectID er med på FrmAllData? - Filtre? Er der andre parametre, der udelukker projekt 129? - Datatyper? Er ProjectID numerisk?
Private Sub DinSøgeknap_click() Dim SogId SogId = Me.FeltetMedDetValgteId DoCmd.Openform "FrmAllData" Form_FrmProjectData.ProjectID.SetFocus DoCmd.FindRecord SogId End Sub
OK, så er jeg her igen. Hvis jeg nu udskifter "FrmAllData" (den med tabkontrollen på) med subformen "FrmProjectData", så virker koden fint: Dim stDocName As String Dim stLinkCriteria As String stDocName = "FrmProjectData" stLinkCriteria = "[ProjectID]=" & Me![ProjectID] DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormEdit Trykker jeg her på cmdknappen fremkommer lige nøjagtig det ProjectID, jeg har valgt, sådan har det også virket hele tiden, men det er jo "FrmAllData" med subformen "FrmProjectData", jeg vil se det udvalgte ProjectID for, er det mon fordi "FrmProjectData" ligger som en subform på en Tabcontrol på en form?. Og nu vil jeg prøve at besvare spørgsmålene fra igår: Ja, ProjectID er vel med på FrmAllData, når den er baseret på qrySearch, som har feltet med. Nej, der er ingen filtre. ProjectID er et AutoNumber, og som tidligere sagt den unike nøgle. >mugs jeg kan se at du blot har fjernet acformEdit, det er afprøvet uden ændring, stadig en fin tom FrmAllData fremkommer. >fdata. Jo Dataentry er sat til Yes....og UPS her gik jeg lige ind og testede på at sætte dem på NO bag begge forme. og vupti nu virker det. Damn, for en begynderfejl. >fdata smid et svar. Så har jeg blot et sidste problem i denne sammenhæng og det er at hvor jeg før fint fra en anden knap kunne oprette en ny tom FrmAllData til udfyldelse får jeg nu fejlmeddelelsen: "You tried to assign the Null value to a variable that is not a Variant datatype, use the Dim statement to declare the variable as a Variant" uanset hvor jeg prøver at skrive noget. Hvor gør jeg lige det???
Undskyld mugs, jeg har stor respekt for dig, men jeg ved ikke rigtig hvad jeg skal bruge din sidste kommentar til, du har ret, men nu er problemet jo, at fordi jeg så nu har sat DataEntry til No, som jeg skal, så fremkommer ovennævnte Datatype fejlmeddelelse, hvordan og hvor skal jeg rette den?
Jeg undrede mig blot over, at det ikke fungerede. Det at formularens egenskab dataindtastning er sat til Nej, vil dette override min åbningskommando. Først åbner jeg formularen og den finder den rigtige post, men derefter følger Dataindtastning til Nej, som jo vil få formularen til at gå til en ny tom post.
"You tried to assign the Null value to a variable that is not a Variant datatype, use the Dim statement to declare the variable as a Variant"
Du får en Null-værdi i en variabel som ikke er af typen Variant. Du har jo de forskellige variabeltyper som String, long Byte o.s.v.
Du har sikkert angivet variablen som en long eller double. Perøv at dimensionere (dim) den som en Variant:
>mugs, ja men hvor? og er det alle variablerne eller er det mon ProjectID, som jo er Autonumber inde bag i den grundlæggende tabel? kan man gøre det globalt og i så fald hvor. Jeg har ikke haft held med at gøre det lokalt
Herligt, at det kom til at virke. M.h.t. Null: Det er ikke dit Autonumber felt, idet det jo tælles op automatisk ved oprettelse af en ny post. Er du sikker på, at du ikke tildeler Null til et-eller-andet, som ikke er af typen Variant? En eller anden reference?
>fdata: Jeg har bag formen lidt kode bag nogle af felterne, hvor jeg har nogle if-sætninger med IsNull, hvor jeg ikke har declareret variabler. F.eks.: Private Sub TbSalesProjectClosingDate_Exit(Cancel As Integer) If Not IsNull(Me.TbSalesProjectClosingDate) Then Me.Form!CmbReasonForClosing.Enabled = True End If End Sub Kan det være det? og iøvrigt 1000 tak for hjælp til både dig og mugs!
Når du bruger Me refererer det jo til den aktive form, så du behøver ikke at have objektsamlingen med. Hvis du ikke vil bruge det reserverede ord Me, skal det være:
>mugs selv tak - jeg har rettet al kode til Me!Tbname.. osv. og det virker ligeså fint som før. Ordet Form var et af de ord man kunne vælge udfra vb's liste, så det må vel eksistere, og koden virkede jo også fint. Uanset hvad har det ikke nogen effekt på min efterhånden ret irriterende Fejlmeddelelse, som fremkommer uanset i hvilket felt jeg starter med at prøve at skrive noget, når jeg så har sagt OK, så viser den det tal eller bogstav jeg nu har skrevet, og jeg kan fortsætte med indtastningen. Jeg tror jeg opretter et nyt spørsmål, for nu jeg tænker over det var den vist begrundelsen for at jeg gik ind og rodede med DataEntry til Yes i sin tid, for så forsvandt fejlmeddelelsen, men til gengæld kunne jeg jo så ikke se de specifikke projektnumre. Det kan jeg jo dog nu.
Tak for point. "You tried to assign the Null value to a variable that is not a Variant datatype, use the Dim statement to declare the variable as a Variant" lugter altså meget af at du selv tildeler Null til et eller andet felt. Er du helt sikker på, at du ikke har en "xxx = Null" et eller andet sted? Eller en "xxx = yyy", hvor yyy er Null? Hvis det sker uanset hvor du taster, kunne fejlen ligge i "FørIndsættelse" handlingen. Har du kode der?
Db er returneret. Fejlen opstår fordi der er tale om en underformular, der er underordnet felt til samme felt i mainform. Når underformularen får en ny post er der ikke noget felt i mainform der passer til det linkede felt i underformularen. Fjernes overordnede - / underordnede felter opstår fejlen ikke.
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.