Avatar billede jan Novice
07. juni 2003 - 23:19 Der er 28 kommentarer og
1 løsning

Opslag og opdatering i samme handling

I min formular der er baseret på en forespørgelse har jeg bla et navnefelt og da det er en flerbruger base vil jeg gerne siker at de forskellige brugerer staver navene ensartet når der er tale om gengangere.

Men hvordan laver man på en og samme tid et opslag i en liste og når der er tale om nye navne der ikke er på listen at man kan opdaterer direkte i formularen.

hilsen Jan
Avatar billede henrik13 Nybegynder
07. juni 2003 - 23:26 #1
Du er nød til, til sidst at opdatere din formular, det gøres med:
Me.requery
Avatar billede henrik13 Nybegynder
07. juni 2003 - 23:27 #2
Du er også nød til at gemme dine nye data i tabellen, før du kan kører en opdatering.  :o)
Avatar billede henrik13 Nybegynder
07. juni 2003 - 23:38 #3
Du gemmer posternre med ordren:
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Vh Henrik
07. juni 2003 - 23:43 #4
Hvis du laver en komboboks til opslag, så skal du sætte egenskaben "Begræns til liste" = Ja.

Dernæst har du en hændelse, som hedder "Ved ikke på liste". På denne hændelse lægger du følgende kode:
Private Sub cmbValg_NotInList(NewData As String, Response As Integer)

    Dim cn As ADODB.Connection
    Dim rst As ADODB.Recordset
   
    Set cn= CurrentProject.connection
    set rst = New ADODB.Recordset
    rst.open "tblDinTabel", cn , adOpenKeyset, adLockOptimistic
       
    rst.AddNew
    rst!Valg = NewData
    rst.Update
    Response = acDataErrAdded

    rst.Close
    Set rst = Nothing
    cn.Close
    Set cn = Nothing
End Sub


Henrik-> Læser du nogensinde spørgsmålene inden du svarer? Eller forsøger du bare konsekvent at svare på alle spørgsmål uanset om du forstår spørgsmålet eller ej?
Avatar billede henrik13 Nybegynder
07. juni 2003 - 23:50 #5
>> thomasjepsen
Hvis du skal havde nye navne i en liste, der er flere der skal slå op i, Så er man da som 1 punkt nød til at opdatere, ellers kan de andre da ikke lave opslag på de nye.
Og tak for dagens første fornærmelse.
Og derved er diskusisjonen slut for mit vedkommende.
Vh Henrik13
08. juni 2003 - 00:01 #6
Henrik-> Men det var jo ikke lige det, som spørgsmålet drejede sig om! Spørgsmålet gik på hvordan man tilføjede poster i en tabel, som blev benyttet til opslag (f.eks. vha komboboks) direkte fra formularen.

Jeg er jo ikke den eneste som har bemærket, at du stort set svarer på alle spørgsmål og ofte svarer du helt hen i skoven, som om du slet ikke har givet dig tid til at læse og forstå spørgsmålet.
Det er belastende for alle, at man skal bruge tid på at sætte sig ind i hvad du skriver - for så at konstatere at det slet ikke har noget med spørgsmålet at gøre.
Det var ikke for at fornærme dig (selvom det måske godt kunne lyde sådan) men blot en opfordring til lige at bruge et par minutter mere på at læse spørgsmålene gennem. Og hvis du ikke mener, at du er helt sikker på hvad der menes, så bed om en uddybning eller lad andre om at besvare spørgsmålet.

pfh tak
/Thomas
Avatar billede henrik13 Nybegynder
08. juni 2003 - 00:24 #7
>> thomasjepsen
Jeg har nu tested de 9 spørgsmål fra i går d. 6-6-03. Der var 1 spørgsmål jeg svarrede på. DVS der er 8 spørgsmål jeg ikke svarrede på det en var om word, og jeg har ikke word på min nye maskine, jeg har en woord 6 liggende men den er uaktuel og for gammel til man bør gi et svar ud fra den. Hvis du lægger mærke til det svarre jeg ikke på word spørgsmål, efter jeg har fået ny maskine.
Nu skriver du der er andre der har bemærket det, det er kun dig og mugs, der har skrevet det, og der kommer du ind og giver ham ret. På mig virker det som om i vil havde mig ud fra experten.
Vh Henrik13
08. juni 2003 - 00:51 #8
På ingen måde! Der er absolut intet personligt i min kommentar. Formålet er netop at vi alle skal kunne være her og samtidig mene, at vi får noget ud af det.
Sådan som Eksperten fungerer, så er der mange som ikke læser spørgsmål hvor der allerede ligger 4-5 svar eller mere. Dvs at når en bruger stiller et spørgsmål og du kort efter svarer med 3-4 indlæg (som måske ikke er relevante), så er chancen for at Spørgeren får svar på sit spørgsmål blevet væsentligt forringet. Derfor - af respekt for andres tid og behov - bør man have dette in mente, når man svare.
Jeg ved godt, at du ikke svare på ALLE spørgsmål (overdrivelse fremmer forståelsen ;o) og du må jo også gøre noget rigtigt når du har fået alle dine point. Men jeg, og flere kolleger/bekendte har bemærket at du - især på det sidste - har været meget ivrig efter at besvare spørgsmål. Og det er jo kun fint :o) Det er jo den slags, som holder Eksperten igang!
Så lad os ikke bruge mere tid på dette.
Avatar billede henrik13 Nybegynder
08. juni 2003 - 00:54 #9
Ok :o)
Avatar billede mugs Novice
08. juni 2003 - 09:32 #10
Begge "kombatanter" har givet udtryk for, at der ikke skal bruges mere tid på dette, men tillad mig alligevel at fremkome med en kommentar, nu hvor mit navn har været nævnt.

Jeg er helt enig med Thomas. Der er over 50000 brugere på eksperten, men vel kun nogle få der bruger Access-kategorien, og endnu færre der svarer. Denne kategori er sammen med nogle få andre kendetegnet ved, at sproget i og behandlingen af spørgsmålene ligger på et væsentligt højere niveau. Og lad det endelig blive ved med det.

Henrik > Når du svarer på et spørgsmål, ser det for mig ud som om, at det give en hjælpende hånd til en bruger, ikke er det væsentlige, men derimod at hive en del af pointhøsten hjem. Det er jo også helt OK. Men tænk lige på, at du ikke kan bruge disse point til noget som helst praktisk anvendeligt. Men udelukkende måle din viden sammenholdt med andres. Det er vel også OK - Og alligevel er det jo intet værd, fordi det som regel er tale om, hvem der kommer først til mølle. Jeg svarer sjældent på et spørgsmål i dagtimerne, idet der på min arbejdsplads er een PC forbundet til internettet, og der er ca 50 medarbejdere, der kan benytte den.

Alene af den grund, at jeg stort set afskåret fra at kunne svare om dagen og Top 10 er derfor ikke alene et udtryk for at vide mest men også om, hvem der på et givent tidsrum har adgang til internettet.

Henrik > I din hidsige pointjagt, er det særdeles irriterende at du som regel skyder med spredehagl i dine svar / kommentarer. Læs spørgsmålene en ekstra gang og forstå dem og formuler derefter et løsningsforslag. I dette spørgsmål kommer du med 3 svar indenfor 12 min, og alle svar viser, at du ikke har forstået spørgsmålet. Og det eneste der er opnået er, at forvirringen breder sig. Specielt hvis spørgeren ikke er så bekendt med Access som du.

Inden for mit arbejde, har vi en gylden regel, inden vi benytter en radio for at kommunikerer med andre:

- Tænk
- Tast
- Tal

Gør det samme, og det vil gavne både dig selv, os andre brugere samt ikke mindst spørgeren.
Avatar billede terry Ekspert
08. juni 2003 - 09:57 #11
I havent looked at all the comments and answers palce so sorry if I say the same as someone else :o)

If I understand the question correctly it is possible that another users has entered the same name into the table but it isnt visible in the combo.

Well I think your going to have to check before accepting the value.

In the combos before update event

If dcount("SomeField", "SomeTable", "SomeField = '" & Me.YourCombo & "'") > 0 Then
'Record exists
msgbox "Already exists"

Cancel = True
Me.YourCombo.requery

end if

Or something like that
Avatar billede jan Novice
08. juni 2003 - 20:15 #12
Hej thomas.

Når jeg afspiller dit forslag fremkommer følgende fejlmeddelsem på den del
rst.open "tblDinTabel", cn , adOpenKeyset, adLockOptimistic.

Fejlmeddelensen lyder som
Run time error`'-2147217900(80040e14)': Der en en ugyldig sætning- "delete", "insert", "procedure", "select" eller "update" var ventet.

Jeg har prøvet synters jeg alt muligt, men uden resultat. Hvad vil du foreslå, for jeg tror du er på rette spor.
08. juni 2003 - 20:28 #13
tblDinTabel skal jo erstattes af navnet på den tabel, hvorfra du henter navnene på listen

Navnet "Valg" skal erstattes af navnet på det tilhørende felt i samme tabel.
Avatar billede mugs Novice
08. juni 2003 - 20:33 #14
janma > Thomas's kode er afprøvet og fungerer 100%.
08. juni 2003 - 20:43 #15
Janma-> det afhænger selvfølgelig lidt af om du har opbygget databasen korrekt.
Hvis du ikke kan få det til at virke, skal du måske lige fortælle lidt mere om hvordan tabellerne er bygget op!
Avatar billede henrik13 Nybegynder
08. juni 2003 - 20:46 #16
>>Mugs
Jeg har nu læst dine bemærkninger om mig.
Jeg har afleveret et svar kl. 23.26.06, og kl. 23.38.52.
Jeg har ledt meget efter det tredje svar,men kan ikke finde det, så jeg er meget spændt på hvad jeg har skrevet i det.
Det er rigtigt der kuun er 12 min. mellem svar1 og svar2. Men jeg kan ikke finde det tredje svar i dette spm.
Normalt hvis jeg kom med sådanne beskyldninger ville jeg undersøge tingene først.
:o)
Avatar billede mugs Novice
08. juni 2003 - 20:50 #17
Henrik > Jeg medgiver, at du kun har 2 svar og 1 kommentar. Men det er noget pladder og en dårlig undskyldning, for du kan jo selv se, at du har 3 indlæg. Og iøvrigt tror jeg ikke på, at du nu (læs først nu) har læst min kommentar. Med den aktivitet du har på eksperten, tror jeg simpelthen ikke på dig!
Avatar billede henrik13 Nybegynder
08. juni 2003 - 21:00 #18
>mugs
Det har du ret i den læste jeg før kl. 10. Men du skrev jo jeg skulle læse det godt, og tænke over det. Det gjorte jeg så samt udprintede det så jeg var helt sikker på det jeg skrev var korrekt.
Og dermed er diskusjonen slut for mit vedkommende.  :o(
Avatar billede jan Novice
08. juni 2003 - 21:08 #19
Først får du lige hvad jeg har skrevet: 

Private Sub Kombinationsboks94_NotInList(NewData As String, Response As Integer)
Dim cn As ADODB.Connection
    Dim rst As ADODB.Recordset
   
    Set cn = CurrentProject.Connection
    Set rst = New ADODB.Recordset
    rst.Open "tblT Faglig Database", cn, adOpenKeyset, adLockOptimistic
       
    rst.AddNew
    rst!Arbejdsgiver = NewData
    rst.Update
    Response = acDataErrAdded

    rst.Close
    Set rst = Nothing
    cn.Close
    Set cn = Nothing

End Sub

T Faglig Database er navnet på tabellen hvori feltet "Arbejdsgiver" skal slås op indgår. Formularen F Faglig Database er baseret på forespørgelsen FS Faglig Data base hvor i der ingår to tabeller - T Faglig Database, og T Medlemmer som udgør en underformular- men det skulle jo ikke ha betydning.
Avatar billede mugs Novice
08. juni 2003 - 21:23 #20
tblT Faglig Database er den tabel du åbner -  men:

Du skriver at den hedder:

T Faglig Database

??
Avatar billede jan Novice
08. juni 2003 - 21:27 #21
OK - jeg har slettet tbl så der kun står T Faglig Database - men resultatet bliver det samme.
08. juni 2003 - 21:40 #22
Er det stadig samme fejlmeddelelse?
I så fald kan du prøve at skrive (selvom det burde være det samme):
Private Sub Kombinationsboks94_NotInList(NewData As String, Response As Integer)
Dim cn As ADODB.Connection
    Dim rst As ADODB.Recordset
   
    Set cn = CurrentProject.Connection
    Set rst = New ADODB.Recordset
    rst.Open "Select * From [T Faglig Database]", cn, adOpenKeyset, adLockOptimistic
       
    rst.AddNew
    rst!Arbejdsgiver = NewData
    rst.Update
    Response = acDataErrAdded

    rst.Close
    Set rst = Nothing
    cn.Close
    Set cn = Nothing

End Sub
08. juni 2003 - 21:40 #23
Hvad er primærnøgle i tabellen T Faglig Database? Er det autonummer?
Avatar billede jan Novice
08. juni 2003 - 21:49 #24
ja korrekt
08. juni 2003 - 22:04 #25
Er det primærnøglen, som er den bundne kolonne i komboboksen? Er det med andre ord ikke selve navnet, som du gemmer i tabellen T Medlemmer, men blot ID'et?
Avatar billede jan Novice
08. juni 2003 - 22:17 #26
Det er primærnøglen der er bundet til komboboksen. Men de to felter "sagsnummer" og "arbejdsgiver" tilhører begge samme tabel T Faglig Database. På listeopslaget fremkommer korrekt de tidligere indtastede navne. Jeg har heller ikke problemer med at skrive et nyt navn men den vil ikke opdatere.
08. juni 2003 - 23:19 #27
Jeg kan ikke gennemskue hvad der går galt....det kan være en enkelt lille detalje som er gal. Jeg tror, at vi er derude, hvor det vil være nødvendigt at kigge rigtigt på databasen med egne øjne for at kunne stille diagnosen. Har du mulighed for at sende den til en af os?
Min adresse er: tj@milla.dk
09. juni 2003 - 00:26 #28
Hej Jan,

Databasen er på vej tilbage til dig.
Det viste sig, at fejlen skyldtes at der var mellemrum i tabelnavnet (Fy! :o) hvorfor der skulle [] omkring. Koden ser herefter således ud:

Private Sub Kombinationsboks94_NotInList(NewData As String, Response As Integer)
Dim cn As ADODB.Connection
    Dim rst As ADODB.Recordset
   
    Set cn = CurrentProject.Connection
    Set rst = New ADODB.Recordset
    rst.Open "[T Faglig Database]", cn, adOpenKeyset, adLockOptimistic
       
    rst.AddNew
    rst!Arbejdsgiver = NewData
    rst.Update
    Response = acDataErrAdded

    rst.Close
    Set rst = Nothing
    cn.Close
    Set cn = Nothing

End Sub

mvh
Thomas
Avatar billede jan Novice
09. juni 2003 - 12:05 #29
Hej Thomas.

Det fungerer. Havde prøvet med [] men havde også lagt ()ind !!

Tak
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