27. december 2005 - 16:21Der er
22 kommentarer og 1 løsning
Checke værdi af Felt der befinder sig i SubForm fra MainForm
HEj..
Jeg har en hovedformular med en Underformular. Ved oprettelse af ny post i hovedformularen, har jeg brug for at der checkes om der er oprettet poster i underformularen, og hvis ikke der er det, så skal dette gøres (der skal kun oprettes én)
Hovedform : frmTransport SubForm : frmTransportBiler Felt i SubForm der skal indsættes værdi i hvis ingen poster er oprettet i SubForm: [T-BilID]
Det der skal ske er altså, at hvis der ikke er oprettet én ny post i underformularen når man har lavet en ny post i hovedformularen, så skal værdien af [T-BilID] = "0"
Knud> Normally a main form/sub form setup means that records on the sub form are related to a record on the main form, and therefore shouldnt exist until the main form record exists. How are you going to create the foreign key in a sub form record if the main form record doesnt exist?
The primary key in the main form is used for the foreign key in the sub form records. This is what makes the relationship. So if you dont have a main form record how do you know which sub form records are related?
Normally the sub form is linked to the main form through primary key (record on main form) and foreign key (records(S) on sub form. (Link child fields/Link Master fields)
If you dont have a primary key (main form) then how do you find the records which you want to have a relationship to the record you are creating?
Jeg har skam også det hele sat op på den måde du skriver. og de er relateret helt ligesom du snakker om.
Det jeg nu bare ønsker, er at når en bruger af formularen begynder at indtaste en ny post i hovedformularen, så udfylder han nogle felter i hovedformularen som er obligatoriske. Når han så vil videre til en anden post, eller ud af formularen, så er det et MUST at der er der er minimum én post oprettet nede i underformularen. For at brugeren ikke selv skal til at gøre dette hver eneste gang, så ønsker jeg at dette sker helt automatisk, men der skal KUN oprettes en ny post i underformularen HVIS der ikke allerede er oprettet én.
1: Use Dcount to cound how many records exist in the table which is used for the sub form. 2: If 0 then use DoCmd.RunSQL "INSERT INTO...... " to insert a record into the table. 3: Requery the sub form to show the record.
Okay, men hvis jeg bruger DCount på tabellen, så vil den jo aldrig give mig værdien 0, det skal vel være noget med at den bruger DCount på de poster som har Fremmed nøgle i underformularen som passer med Primær nøglen i Hovedformularen.
En anden ting, er det med DoCmd.RunSQL osv... hvordan laver jeg den helt præcist så den indsætter følgende Data:
Tabellen den skal indsætte Data i hedder tblTransportBiler (altså tabellen til underformularen), Det felt der forbinder underformularen med hovedformularen hedder [tblTransportBiler].[T-TurID] i underformularen, og hedder [tblTransport].[TurID] i hovedformularen.
Den skal derfor indsætte en post i tblTransportBiler hvor [tblTransportBiler].[T-TurID] = [tblTransport].[T-TurID], og hvor [T-BilID] = "0"
hvordan får jeg det sat sammen til et stykke SQL kode ?
Er der noget bestemt formål med at vide om der er nogen poster i underformularen? Der vil i alle tilfælde være en blank linje med felterne. Hvis du gerne vil have værdien "0" i felt, når der dannes en ny post, kan du sætte standardværdien i tabellen til 0. Så snart du begynder at skrive i et felt i den blanke linje kommer værdien "0" frem og der dannes en ny blank linje(til den potentielle næste post).
Hej Fynbohans.. Det var også min første ide, men dette opretter ikke en ny post! og det er nødvendigt for mig at der bliver sat en post på.
Det er lidt svært at forklare præcis hvorfor jeg har brug for det, men i store træk går min dB ud på at jeg har en indtastningsformular, og en dipsonerings formular. og det er i indtastningen at der er en underformular. Det som jeg indtaster er nemlig en masse transporter, hvorpå der skal kunne hægtes mere end én Bil på. Det jeg så ønsker at få at se i min disponerings formular, er i store træk alle transporterne som ikke er afsluttet, og det jeg skal se, er så den sidst påhægtede bil på en transport. Håber det er til at forstå bare en lille smule.
Prøv med en variabel af typen Long, f.eks. Dim SidsteID as Long. Ved åbning af formularen sætter du SidsteID = højeste ID. Lav en forespørgsel indeholdende ID og vælg Totaler/Sidste. Hver gang du går til en ny post undersøger du om SidsteID er forskellig fra det nye ID, sætter den ønskede ind feltet i underformularen og sætter SidsteID = aktuelle ID.
Fynbohans> Ja, men hvis der ikke er oprettet nogen post i underformularen, så er der endnu ikke noget som har fået et ID, og så kan jeg ikke rigtig bruge den til noget.
Terry> Tja, jeg bøvler lidt med det der docmd.runSQL. indtil videre ser du ud somfølgende:
DoCmd.RunSQL "INSERT INTO tblTransportBiler ([T-TurID], [T-BilID]) VALUES (Me.TurID, '0')"
det der sker når jeg kommer til dette stykke kode, så i stedet for at den selv henter værdien af Me.TurID, så vil den have at man manuelt skal indtaste den i en inputbox som kommer frem på skærmen. hvad skal jeg skrive for at den selv indhenter værdien af Me.TurID fra formularen. har på fornemmelsen at det er noget med min brug af "".
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.