Avatar billede per2edb Praktikant
19. september 2014 - 20:58 Der er 11 kommentarer og
1 løsning

Ændre record ID på en subform

Jeg har en subform bundet til en postkilde med record bestemt af ID
På subformen er en række bundne kontrolelememter bl.a ID

I et modul ændre jeg ID.
Ændringen skal tilsvarende ændre postkildens ID og dermed kontrolelementerne
Avatar billede terry Ekspert
20. september 2014 - 09:43 #1
I think you need to explain in more detail

Give an example.
Avatar billede per2edb Praktikant
20. september 2014 - 11:30 #2
På Subformen har jeg postkilden: Ordre

I et modul har jeg:

Dim xx.....

SQL1 = "SELECT *"
SQL2 = " FROM Ordre"
SQL3 = " WHERE(((Ordre.OrdredId) = " & Id & "))"
       
Frm.Form.RecordSource = SQL1 + SQL2 + SQL3
Frm.Form.Requery

Jeg kan her sætte ID på Formen, men det er en kodemæssig "tung" løsning.
Findes der ikke en "smartere" metode
Avatar billede terry Ekspert
20. september 2014 - 11:57 #3
Jeg kan her sætte ID på Formen, ????


Don't you mean you are filtering the sub form to only show the record(s) which have OrderID = ID?


men det er en kodemæssig "tung" løsning.

Why not use the filter property?


.Form.Requery shouldn't be necessary. Changing the .RecordSource in code automatically requeries.
Avatar billede terry Ekspert
20. september 2014 - 11:59 #4
And you don't need 3 variables (SQL1 ... SQL3)

Frm.Form.RecordSource = "SELECT * from Ordre WHERE OrdreID = " & ID
Avatar billede per2edb Praktikant
20. september 2014 - 12:17 #5
Jeg har formuleret det uklart

Det er ikke SQL statementet jeg ønsker du skal se på.
Eksemplet med SQL bruger jeg idag og det virker.

Da jeg opfatter det som der er 2 SQL'er. En i subformens postkilde der er aktiv når formen kaldes, og så en i modulet jeg benytter når ID skal ændres.

Kan den i Modulet ikke erstattes af et filter og hvordan sættes det op????
Jeg har prøvet dette men det virker ikke:

Frm.Form.FilterOn = false
   
Set rs = Frm.Form.Recordset.Clone
rs.Requery
     
rs.FindFirst "[OrdreID]= " & ID & ""
If Not rs.EOF Then Frm.Form.Bookmark = rs.Bookmark
     
        ....????
     
Frm.Form.FilterOn = True
Avatar billede terry Ekspert
20. september 2014 - 12:30 #6
The best solution is really dependant on a number of factors and without a full understanding of your application its not easy to decide.

Is the main form and sub form linked through Linked childfield/master field, if so then I don't see the need to change sub forms record source, or filter property.

If your not using  Linked childfield/master fields then the next question is why do you need code in module to manipulate the sub form?

There is nothing wrong in changing the forms recordsource in code like you are doing, I have used a similar method many times.

I still don't understand what the problem is!
Avatar billede terry Ekspert
20. september 2014 - 12:42 #7
Avatar billede per2edb Praktikant
20. september 2014 - 15:12 #8
Hej Terry
Filter på subformen gav en simpel og 100% god løsning - 1000 tak
Frm.Form.Filter = "OrdreId =" & Id
Frm.Form.FilterOn = True

Nu mangler jeg blot det samme på en ComboBox1

Jeg skal filtrere Column(0) Navn: Produkt
Variabel der skal filtreres:  ProduktNavn

Noget i denne retning ???????
Frm.Form.ComboBox1.Column(0).Filter = " Produkt=" & ProduktNavn
Avatar billede terry Ekspert
20. september 2014 - 17:11 #9
There is no filter property on a combo box.

You need to base the combo's row source on a query and in the query have the criteria call a public global function which returns the ProduktNavn, or the criteria needs to reference an object on the form containing the Produktnavn

In both cases you will need to requery the combo
Avatar billede per2edb Praktikant
20. september 2014 - 18:20 #10
Det virker også. Det har været en stor hjælp.
Lav det å u kanfå point
Avatar billede terry Ekspert
21. september 2014 - 10:16 #11
great
Avatar billede terry Ekspert
21. september 2014 - 11:30 #12
thanks
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

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