Avatar billede yxos Nybegynder
16. januar 2006 - 13:24 Der er 11 kommentarer og
1 løsning

acNewRec syntax

frmMain er hovedform; den har ingen tilknyttet tabel.
Den har derimod en del subforms, som har tilknyttet tabellen med navn "Tabel1".

I frmMain ønsker jeg en knap til at tilføje en ny record i Tabel1.
Med Wizard'en får jeg følgende event:

Private Sub cmdNyTur_Click()
    DoCmd.GoToRecord acDataTable, , acNewRec
End Sub

Men knappen virker ikke. Den siger "Denne handling kræver Objektnavn"
Fair nok, formen har jo ikke tilknyttet Tabel1.

Så jeg prøver at ændre til:
    DoCmd.GoToRecord acDataTable, "Tabel1", acNewRec

men det virker heller ikke, den siger "Objektet "Tabel1" er ikke åbent.

Jeg har også prøvet at sætte Tabel1 som Postkilde til frmMain men det giver ingen forskel.

Så roder jeg mig ud i en masse DoMenuItem, og er nu gået helt død.

Hvordan får jeg min knaps Click-event til at oprette en ny record i Tabel1, når denne ikke er linket til frmMain, hvor knappen er.
Avatar billede jensen363 Forsker
16. januar 2006 - 13:32 #1
Benyt efterfølgende FormOpen med syntaxen :

  DoCmd.GoToRecord , , acNewRec
Avatar billede -anders- Juniormester
16. januar 2006 - 13:57 #2
Som jensen363 er inde på benytter man typisk en form til at oprette nye poster med. Hvis du ikke ønsker dette kan man opetter nye poster i en tabel feks. med ADO, men det afhænger meget af hvad du vil.

Hvis du vil benytte en form til formålet skal du blot åbne denne form ved klik på din knap i frmmain

DoCm.OpenForm "NavnPåDinForm"
DoCmd.GoToRecord , , acNewRec

Denne form har så Tabel1 som postkilde, og de relavante felter der skal udfyldes præsenteres/vises så på formen. Dette er den mest brugte metode
Avatar billede -anders- Juniormester
16. januar 2006 - 14:07 #3
Hvis du vil opette en ny post direkte i tabellen uden at benytte en formular til formålet, kan du benytte feks. en inputbox med ADO. Nedenstående eks. viser hvordan. Bemærk at eks. kun skriver til et felt i tabellen, indholdet i feltet i tabellen svare så til den værdi du indtaster i inputboxen. Jeg benytter ofte denne metode til at vedligholde typisk opslagstabeller (en siden af en en til mange relation)

Dim rs As ADODB.Recordset
Dim Værdi as String
Værdi = Inputbox("Angiv den nye værdi!", "Opret ny væri")
If Len(Værdi) > 0 then
    Set rs = New ADODB.Recordset
    rs.Open "NavnPåDinTabel", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    rs.AddNew
    rs!NavnPåFeltITabel = Værdi
    rs.Update
    rs.Close
    Set rs = Nothing
End if
Avatar billede -anders- Juniormester
16. januar 2006 - 14:11 #4
Ovenstående kode skal indsættes ved hændelsen OnClick på din knap i frmmain
Avatar billede -anders- Juniormester
16. januar 2006 - 14:16 #5
Hvis du ønsker at oprette posten direkte i en subform skal denne subform tillade redigering, og tilføjelser, derefter kan du prøve denne kode på knappen

Me!NavnPåDinSubform.SetFocus
DoCmd.GoToRecord , , acNewRec
Avatar billede yxos Nybegynder
16. januar 2006 - 14:20 #6
...i fuld gang med at teste aandersens forslag
Avatar billede yxos Nybegynder
16. januar 2006 - 14:27 #7
Sørme så.  ADO løsningen virker !  Læg et svar.

Nu mangler jeg bare at gøre følgende:
Jeg har en subform som viser alle mine records.
Jeg kan godt finde ud af at lave en frmListe.Requery efter dine kodeliner, for at få opdateret listen.
Men listen starter fra toppen. Hvilken kommando skal jeg bruge herefter for, at positionere ved den sidste, nye record, og også gøre denne til Current ?
Avatar billede yxos Nybegynder
16. januar 2006 - 14:28 #8
Jensen 363, den har jeg prøvet og den virkede ikke.  :-(
Avatar billede -anders- Juniormester
16. januar 2006 - 14:36 #9
Indlægget fra jensen363 er korrekt nok, men forudsætter så vidt jeg kan vurdere en seperat formular til formålet.

mht. hensyn til at sætte fokus på sidst oprettet post kan der bruges flere forskellige metoder igen afhænger det lidt af hvordan det er skruet sammen.

det kan laves,men jeg husker ikke lige hvordan. Jeg mener at have lidt kode derhjemme der kan klare den, jeg kan poste den her i aften
Avatar billede yxos Nybegynder
16. januar 2006 - 14:40 #10
Ja, men løsningen uden formular som aandersen gav var den jeg skulle bruge.
Avatar billede -anders- Juniormester
16. januar 2006 - 14:47 #11
Tak for point :o)
ADO er meget anvenligt når man ønsker at arbejde med data direkte i tabellen, det hurtigt og fleksibelt, og nemt at vedligholde, og man "spare" også forms et stykke af vejen. Hvis man opretter poster, og der er mange felter der skal udfyldes anbefaler jeg dog at benytte formulare til formålet ikke mindst af hensyn til overskueligheden, og brugervenlighed.

Jeg prøver at kikke efter koden til current record senere i aften.
Avatar billede yxos Nybegynder
16. januar 2006 - 14:56 #12
vedr. positionering og Current, har jeg oprettet nyt spm: http://www.eksperten.dk/spm/679976
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