Avatar billede jaze Nybegynder
09. september 2004 - 09:25 Der er 82 kommentarer og
1 løsning

Åben formular på specifik post

halløj nogen der kan hjælpe med følgende jeg har lavet en funktion der ser således ud

Function OpenSagerGenerelt(sagsnr As Variant)
DoCmd.OpenForm "sager_generelt", , , KompletSagsNr = sagsnr
End Function

Problemet er den åbner ikke op på den korrekte post hvorfor Kompletsagsnr er unik....
Avatar billede jaze Nybegynder
09. september 2004 - 09:26 #1
hov har iøvrigt også prøvet med sager_generelt.kompletsagsnr stadigvæk uden held.
Avatar billede hubs Nybegynder
09. september 2004 - 09:41 #2
Halløjsa,

Får du en fejl eller hvordan? og skal der evt. ikke "" om - "KompletSagsNr = sagsnr"
Avatar billede hubs Nybegynder
09. september 2004 - 09:42 #3
lige et spørgsmål til er sagsnr et tal eller en tekst?
Avatar billede jaze Nybegynder
09. september 2004 - 09:49 #4
hej hubs det er både tekst og tal blandet og bindestreger, jeg har fundet de 2 "" det var selvf. en bøf.
Der kommer ingen fejl og den åbner formulareren bare på en blank post. Hvis jeg skriver som i dit eks. kommer der en popup hvor man kan se sagsnr ikke er opfyldt og taster jeg det manuelt der kommer den rette post.
Avatar billede jaze Nybegynder
09. september 2004 - 09:51 #5
der skal ikke stå "kompletsagsnr = " & sagsnr når det er en variable der er blevet sendt
Avatar billede hubs Nybegynder
09. september 2004 - 09:53 #6
Okay så prøv evt. lige at sætte ' ' om sagsnr altså:

"KompletSagsNr = 'sagsnr'"

Ved ikke om det hjælper c",)

har du prøvet og se hvilken værdi der gemmer sig i sagsnr? Prøv evt. at indsætte (Msgbox sagsnr) i starter af din kode
Avatar billede madschristensen Nybegynder
09. september 2004 - 09:54 #7
DoCmd.OpenForm "sager_generelt", , ,"KompletSagsNr = 'sagsnr'"
Avatar billede jaze Nybegynder
09. september 2004 - 09:54 #8
Ja da til dit spm og msgbox og det er sgu den rette værdi der gemmer sig
Avatar billede hubs Nybegynder
09. september 2004 - 09:55 #9
Variablen sender du vel med, når du kalder din funktion ikke?
Avatar billede mugs Novice
09. september 2004 - 09:56 #10
DoCmd.OpenForm "sager_generelt"
Forms!sager_generelt!KompletSagsNr.SetFocus
DoCmd.FindRecord Me!sagsnr
Avatar billede jaze Nybegynder
09. september 2004 - 09:57 #11
Hvis jeg bruger denne DoCmd.OpenForm "sager_generelt", , ,"KompletSagsNr = 'sagsnr'" er det samme resultat åbner form på en blank post.
Avatar billede hubs Nybegynder
09. september 2004 - 09:59 #12
Hmm underligt den burde virke, men prøv lige mugs' smarte kode, den burde også virke c",)
Avatar billede jaze Nybegynder
09. september 2004 - 10:00 #13
Hej Mugs, skal dit eks. som som det står her for det går i kage. Me ikke valid keyword?????????
Avatar billede jaze Nybegynder
09. september 2004 - 10:02 #14
Hvis jeg skriver således virker alt som det skal DoCmd.OpenForm "sager_generelt", , , "KompletSagsNr = '2004-B-5-140'"
Avatar billede jaze Nybegynder
09. september 2004 - 10:04 #15
hvad skal jeg skrive for at smide min var ind istedet for plejer sgu ikke at drille sådan
Avatar billede hubs Nybegynder
09. september 2004 - 10:05 #16
åååh for pokker prøv med "sager_generelt", , , "KompletSagsNr = ' & sagsnr & '"
Avatar billede hubs Nybegynder
09. september 2004 - 10:06 #17
hov mangler lige lidt:

"sager_generelt", , , "KompletSagsNr = '" & sagsnr & "'"
Avatar billede mugs Novice
09. september 2004 - 10:08 #18
Me refererer til den altid aktuelle form.
hubs sidste forskag burde fungere. Også her kan du bruge det reserverede ord Me:

"sager_generelt", , , "KompletSagsNr = ' & Me.sagsnr & '"
Avatar billede madschristensen Nybegynder
09. september 2004 - 10:10 #19
Jeg har nu altid været glad for explicit erklæring - men kan da godt se noget smart i at koden er mere portabel med Me.
Avatar billede jaze Nybegynder
09. september 2004 - 10:11 #20
Hubs> det virker sgu heller ikke jeg er godt nok noget forvirret
Avatar billede mugs Novice
09. september 2004 - 10:13 #21
jaze > Kan du ikke give en mere specifik melding hvor det fejler?
Avatar billede hubs Nybegynder
09. september 2004 - 10:15 #22
Det var ski da godt nok sært... har du mulighed for at sende DB'en til mig, så skal jeg nok lige titte på den?
Avatar billede mugs Novice
09. september 2004 - 10:18 #23
Avatar billede hubs Nybegynder
09. september 2004 - 10:26 #24
Hvis du siger at "sager_generelt", , , "KompletSagsNr = '2004-B-5-140'" virker fint og at MsgBox sagsnr giver den rette værdi (2004-B-5-140), ja så burde alt-andet-lige følgende virke "sager_generelt", , , "KompletSagsNr = '" & sagsnr & "'"

Vær opmærksom på at der står ' " &...& " ' " bare uden mellemrum'ne c",)
Avatar billede jaze Nybegynder
09. september 2004 - 10:28 #25
mugs>> Der hvor det fejler er jeg står i en form og klikker på 1 knap denne opretter så et sagsnummer og smider brugeren over på den ny oprettede sag klar til indtastning. Bortset fra at den ikke stiller sig på den nyoprettede sag med mindre jeg i mit modul skriver sagsnummeret på den næste sag jeg opretter så fungerer alt korrekt. Se lidt tidligere i dette spm.

Det undrer mig fordi jeg ofte bruger denne form for kald, men her tér den sig anderledes? Kontrollerer jeg indholdet af min variable linien over docmd kaldet er det den rette værdi den indholder.
Avatar billede jaze Nybegynder
09. september 2004 - 10:29 #26
hubs jeg kunne ikke være mere enig
Avatar billede jaze Nybegynder
09. september 2004 - 10:33 #27
Nu kommer her en meget mærkelig oplysning, hvis jeg bruger følgende lini virker det som det skal
DoCmd.OpenForm "sager_generelt", , , "KompletSagsNr like '" & sagsnr & "'"
Avatar billede madschristensen Nybegynder
09. september 2004 - 10:33 #28
Så den skal faktisk ikke finde en post - men oprette en ny og indsætte sagsnummeret i denne ?
Avatar billede hubs Nybegynder
09. september 2004 - 10:34 #29
Kunne det ikke ha noget at gøre med, at den endnu ikke har registeret den nye "sag", og derfor naturligvis ikke kan finde den?
Avatar billede hubs Nybegynder
09. september 2004 - 10:36 #30
ja lige min tanke mads c",)
Avatar billede jaze Nybegynder
09. september 2004 - 10:37 #31
mads, det er korrekt
Avatar billede jaze Nybegynder
09. september 2004 - 10:38 #32
Tak til alle for hurtig assistance håber jeg kan hjælpe jer en dag.

Points går til Hubs, håber ikke dette træder nogen over fusserne
Avatar billede jaze Nybegynder
09. september 2004 - 10:39 #33
Mads, lige for at runde af, hvorfor kan den så finde posten når jeg skriver den manuelt
Avatar billede hubs Nybegynder
09. september 2004 - 10:40 #34
Jeg behøver ikke nogen point jaze c",)
Avatar billede hubs Nybegynder
09. september 2004 - 10:42 #35
Kan du sende DB'en til mig, så skal jeg nok lige hurtigt fikse den c",)

jacob.simonsen[at]gmail.com
Avatar billede madschristensen Nybegynder
09. september 2004 - 10:49 #36
Det ved jeg ikke helt - det er jo en almindelig where statement.. - men du kunne måske overveje openargs istedet:

Sub Form_Open(Cancel As Integer)
    Dim strEmployeeName As String
    ' If OpenArgs property contains employee name, find
    ' corresponding employee record and display it on form. For
    ' example,if the OpenArgs property contains "Callahan",
    ' move to first "Callahan" record.
    strEmployeeName = Forms!Employees.OpenArgs
    If Len(strEmployeeName) > 0 Then
        DoCmd.GoToControl "LastName"
        DoCmd.FindRecord strEmployeeName, , True, , True, , True
    End If
End Sub
Avatar billede jaze Nybegynder
09. september 2004 - 10:58 #37
Kunne man bruge gotorecerd istedet for?
Avatar billede jaze Nybegynder
09. september 2004 - 10:58 #38
hubs jeg kan desværre ikke sende dig db pga person data
Avatar billede hubs Nybegynder
09. september 2004 - 11:00 #39
aaah okay, jeg kan lige prøve at lave et alternativt ex. til dig i stedet så. Hvilken version Access bruger du?
Avatar billede jaze Nybegynder
09. september 2004 - 11:02 #40
2000
Avatar billede hubs Nybegynder
09. september 2004 - 11:03 #41
Jeg har godt nok Xp, men jeg prøver lige, om det kan lade sig gøre c",)
Avatar billede jaze Nybegynder
09. september 2004 - 11:21 #42
Hej Igen Hubs, har siddet og testet lidt, det er tilsyndeladende recordsættet ikke bliver opdateret og posten er derfor ikke med endnu, hvad kan man gøre ved det? Hvis jeg prøver me.requery komme der en invalid use of keyword
Avatar billede hubs Nybegynder
09. september 2004 - 11:29 #43
Prøv engang at smide følgende kode ind under din "Button":

DoCmd.GoToRecord , , acNewRec
Avatar billede hubs Nybegynder
09. september 2004 - 11:30 #44
Så skulle din record gerne være gemt inden du åbner "sager_generelt" formen c",)

Du kunne vel ikke lige vise mig den aktuelle kode for din Button?
Avatar billede jaze Nybegynder
09. september 2004 - 11:33 #45
Private Sub btnCreate_Click()
Dim confirm As String
Dim rstName As String

rstName = Me.RecordSource

If Me.sagsNr_text <> "" And Me.oprettetAf_text <> "" Then
confirm = MsgBox("Følgende sagsnummer oprettes " & UCase(Me.sagsNr_text), vbOKCancel, "Oprettelse")
    If confirm = vbOK Then
    Call Main
    Else
    Me.sagsNr_text = ""
    Me.oprettetAf_text = ""
    Me.sagsNr_text.SetFocus
    End If
Else
MsgBox ("Begge Felter skal udfyldes")
Me.sagsNr_text.SetFocus
End If
End Sub

   
'BeginAddNewVB
Public Sub Main()
Dim rstName As String

PassedSagsnr = Me.sagsNr_text

rstName = Me.RecordSource
    On Error GoTo ErrorHandler

    'recordset and connection variables
    Dim Cnxn As ADODB.Connection
    Dim rstLøbeNr As ADODB.Recordset
    Dim strCnxn As String
    Dim strSQL As String
   
    'record variables
    Dim strSagsNr As String
    Dim strOprettet_Af As String
    Dim blnRecordAdded As Boolean

    ' Open a connection
    Set Cnxn = New ADODB.Connection
    strCnxn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Lobbækbyggeforretning\kundekartotek.mdb;"
    Cnxn.Open strCnxn
     
    ' Open Employees Table with a cursor that allows updates
    Set rstLøbeNr = New ADODB.Recordset
    strSQL = rstName
    rstLøbeNr.Open strSQL, strCnxn, adOpenKeyset, adLockOptimistic, adCmdTable
   
    ' Get data from the user
    strSagsNr = Me.sagsNr_text 'Trim(InputBox("Enter first name:"))
    strOprettet_Af = Me.oprettetAf_text 'Trim(InputBox("Enter last name:"))
   
    ' Proceed only if the user actually entered something
    ' for both the first and last names
    If strSagsNr <> "" And strOprettet_Af <> "" Then
   
        rstLøbeNr.AddNew
        rstLøbeNr!sagsnr = strSagsNr
        rstLøbeNr![oprettet af] = strOprettet_Af
        rstLøbeNr.Update
        blnRecordAdded = True
       
        ' Show the newly added data
        MsgBox "Følgende sagsnr: " & _
        UCase(rstLøbeNr!sagsnr) & " blev oprettet af: " & UCase(rstLøbeNr![oprettet af])
       
    Else
        MsgBox "Vær opmærksom på begge felter SKAL udfyldes"
    End If
         
    ' Delete the new record because this is a demonstration
    'Cnxn.Execute "DELETE FROM løbenr6 WHERE sagsnr = '" & strSagsNr & "'"
   
   
    ' clean up
    Me.sagsNr_text = ""
    Me.oprettetAf_text = ""
    rstLøbeNr.Close
    Cnxn.Close
    Set rstLøbeNr = Nothing
    Set Cnxn = Nothing
    Me.Requery
    Call opret.CreateNextCase(PassedSagsnr)
   
   
    Exit Sub
   
ErrorHandler:
  ' clean up
    If Not rstLøbeNr Is Nothing Then
        If rstLøbeNr.State = adStateOpen Then rstLøbeNr.Close
    End If
    Set rstLøbeNr = Nothing
   
    If Not Cnxn Is Nothing Then
        If Cnxn.State = adStateOpen Then Cnxn.Close
    End If
    Set Cnxn = Nothing
   
    If Err <> 0 Then
        MsgBox Err.Source & " --> " & Err.Description, , "FEJL"
    End If

End Sub
Avatar billede hubs Nybegynder
09. september 2004 - 11:35 #46
Hooold da op det var noget af en smøre c",) Kigger den lige igennem
Avatar billede jaze Nybegynder
09. september 2004 - 11:36 #47
hvor vil du smide DoCmd.GoToRecord , , acNewRec ind
Avatar billede hubs Nybegynder
09. september 2004 - 11:41 #48
Ja det er jo lige det c",)

Jeg kan ikke lige se, hvor kalder du din "OpenSagerGenerelt" funktion
Avatar billede jaze Nybegynder
09. september 2004 - 11:47 #49
det er et modul
Avatar billede jaze Nybegynder
09. september 2004 - 11:48 #50
som bliver kaldt fra opret.CreateNextCase(PassedSagsnr) modulet
Avatar billede jaze Nybegynder
09. september 2004 - 11:50 #51
opret modul koden kommer her.

Public Function CreateNextCase(PassedSagsnr As Variant)
sagsnr = Split(PassedSagsnr, "/")
   
    'check content of dynamic array created above only for control
    'MsgBox sagsnr(0)
    'MsgBox sagsnr(1)
    'MsgBox sagsnr(2)
    'MsgBox sagsnr(3)

'recordset and connection variables
    Dim Cnxn As ADODB.Connection
    Dim rstSager As ADODB.Recordset
    Dim strCnxn As String
    Dim strSQL As String
    'record variables
    Dim strSagsÅr As String
    Dim strOmråde As String
    Dim strGruppe As String
    Dim strLøbenr As String
    Dim strKompletSagsnr As Variant
    Dim blnRecordAdded As Boolean

    ' Open a connection
    Set Cnxn = New ADODB.Connection
    strCnxn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Lobbækbyggeforretning\kundekartotek.mdb;"
    Cnxn.Open strCnxn
     
    ' Open sager_generelt table with a cursor that allows updates
    Set rstSager = New ADODB.Recordset
    strSQL = "Sager_generelt"
    rstSager.Open strSQL, strCnxn, adOpenKeyset, adLockOptimistic, adCmdTable
   
    ' Get data from the string passed
    strSagsÅr = "20" & sagsnr(0)
    strOmråde = UCase(sagsnr(1))
    strGruppe = sagsnr(2)
    strLøbenr = sagsnr(3)
    strKompletSagsnr = strSagsÅr & "-" & strOmråde & "-" & strGruppe & "-" & strLøbenr
   
        rstSager.AddNew
        rstSager!Sagsår = strSagsÅr
        rstSager!Område = strOmråde
        rstSager!gruppe = strGruppe
        rstSager!løbenr = strLøbenr
        rstSager!KompletSagsNr = strSagsÅr & "-" & strOmråde & "-" & strGruppe & "-" & strLøbenr
        rstSager.Update
        blnRecordAdded = True
 
  'Calls function and redirects the user
  Call OpenSag.OpenSagerGenerelt(strKompletSagsnr)
   
    ' clean up
    rstSager.Close
    Cnxn.Close
    Set rstSager = Nothing
    Set Cnxn = Nothing
    Exit Function

End Function
Avatar billede hubs Nybegynder
09. september 2004 - 11:53 #52
aaah der.

Prøv lige for sjov skyld og "Indent" din Call opret.CreateNextCase(PassedSagsnr) og så bare lav koden efter din Me.Requery

DoCmd.OpenForm "sager_generelt", , , "KompletSagsNr = '" & PassedSagsnr & "'"
Avatar billede hubs Nybegynder
09. september 2004 - 11:56 #53
hov der var jeg vist lidt for hurtigt ude, prøv i stedet i dit modul med

DoCmd.OpenForm "sager_generelt", , , "KompletSagsNr = '" & strKompletSagsnr & "'"
Avatar billede jaze Nybegynder
09. september 2004 - 12:01 #54
øhh hubs du har tabt mig, indent?
Avatar billede hubs Nybegynder
09. september 2004 - 12:02 #55
Det er helt klart et 'update' problem

Når du prøver me.requery, hvor opstår "invalid use of keyword" fejlen?
Avatar billede hubs Nybegynder
09. september 2004 - 12:03 #56
indent var bare lige at smække en apostrof foran linien så den bare bliver betragtet som programmør tekst c",)
Avatar billede jaze Nybegynder
09. september 2004 - 12:03 #57
der er når sager_generelt formen er åben


Hvad betyder indent?
Avatar billede jaze Nybegynder
09. september 2004 - 12:07 #58
åh okay, jeg plejer at sige rem fra DOS dagene
Jeg har prøvet din løsning, den åbner en blank record

Hvad pokker kan jeg gøre for at opdatere record sættet i sager_generel så den nye post er med??????????
Avatar billede hubs Nybegynder
09. september 2004 - 12:09 #59
Indent betyder egentlig bare et hak, altså at man lige 'hakker' teksten så den ikke bliver betragtet som kode = 'Calls function and redirects the user c",)

Har du en E-mail så kan jeg lige prøve at sende et simpelt ex. til dig
Avatar billede hubs Nybegynder
09. september 2004 - 12:11 #60
Jamen det simpleste svar jeg kan give er bare at bruge Me.Requery, det burde klare dine problemer, så vi skal lige finde ud af hvorfor du får en fejl
Avatar billede hubs Nybegynder
09. september 2004 - 12:13 #61
Er det den her der skaber problemer?
...
Me.Requery
Call opret.CreateNextCase(PassedSagsnr)
...
Avatar billede jaze Nybegynder
09. september 2004 - 12:16 #62
jaze[at]image.dk
Avatar billede hubs Nybegynder
09. september 2004 - 12:19 #63
Kom lige til at kigge på din "clean up" prøv lige at smide din Me.requery op i starten af den

' clean up
    Me.Requery
    Me.sagsNr_text = ""
    Me.oprettetAf_text = ""
    rstLøbeNr.Close
    Cnxn.Close
    Set rstLøbeNr = Nothing
    Set Cnxn = Nothing
    Call opret.CreateNextCase(PassedSagsnr)
Avatar billede jaze Nybegynder
09. september 2004 - 12:21 #64
Jeg får ikke nogen fejl, når jeg bruger me.requery som det er skrevet her.

Men hvis jeg smider det ind i modulet openSag fremkommer fejlen.

Problem ser ud som om at hvis jeg bruger me.requery på knappen, så er det ikke den rette tabel der bliver opdateret, kunne man skrive noget i retning af tbl.sager_generelt.requery??????
Avatar billede hubs Nybegynder
09. september 2004 - 12:32 #65
Alternativ løsning:

Function OpenSagerGenerelt(sagsnr As Variant)
DoCmd.OpenForm "sager_generelt"
Me.KompletSagsNr = sagsnr
End Function
Avatar billede jaze Nybegynder
09. september 2004 - 12:34 #66
Kunne man snyde så alt blev lukket og herefter åbnet?
Avatar billede jaze Nybegynder
09. september 2004 - 12:35 #67
Hubs underlig som mennesker tænker ens nogen gange sad med samme overvejelser
Avatar billede hubs Nybegynder
09. september 2004 - 12:37 #68
LOL, hov en lille rettelse...

(Me.KompletSagsNr = sagsnr) skal være

Forms!sager_generelt.KompletSagsNr = sagsnr
Avatar billede mugs Novice
09. september 2004 - 12:39 #69
I stedet for Requery, kunne man måske benytte Docmd.RunCommand acog så kan jeg ikke huske mere. Men den gennemtvinger en lagring af den nye post.
Avatar billede mugs Novice
09. september 2004 - 12:42 #70
Således.

docmd.RunCommand accmdsaverecord
Avatar billede jaze Nybegynder
09. september 2004 - 12:45 #71
den gik heller ikke
Avatar billede jaze Nybegynder
09. september 2004 - 12:48 #72
Mugs, jeg tror stadigvæk det er det forkerte sæt der bliver gemt
Avatar billede jaze Nybegynder
09. september 2004 - 12:49 #73
Husk den bliver kaldt fra en anden form og det ser ud som om det er den post den kommer fra der bliver gemt
Avatar billede jaze Nybegynder
09. september 2004 - 13:05 #74
Hej Hubs, har prøvet bare at lukke den oprindelige form og så manuelt åbne der, hvor den nye record er oprettet og hvis jeg gør det lige med det samme er posten der ikke men venter jeg ca. 3 sekunder er den der. Kan man sætte noget timer på???????
Avatar billede hubs Nybegynder
09. september 2004 - 13:11 #75
Uuuha det aner jeg virkelig ikke, men jeg kunne forestille mig, at mugs kunne være behjælpelig der. c",)

Det var godt nok noget af en delay, du får.
Avatar billede jaze Nybegynder
09. september 2004 - 13:13 #76
har lige prøvet et par gange og det virker hvis jeg venter ser det ud til

Er du gal en drejening dette spm har taget.
Avatar billede hubs Nybegynder
09. september 2004 - 13:19 #77
LOL ja mon ikke, og det her er så indlæg nr. 77 c",)
Avatar billede jaze Nybegynder
09. september 2004 - 13:22 #78
Er det ikke muligt at lave en pop som brugeren ser i 3 sekunder og som selv forsvinder, nu virker alt.
Hubs, selv den første kode jeg sendte dig virker nu, med drekte kald jeg skulle sgu bare vente i 3 sekunder hold da kæft hvor latterligt.
Avatar billede hubs Nybegynder
09. september 2004 - 13:37 #79
Hvor er det bare typisk c",)

Jeg er desværre ikke bekendt med timerer, men jeg kunne da absolut forestille mig, at det er muligt.
Avatar billede jaze Nybegynder
09. september 2004 - 14:30 #80
hubs smid lige et svar
Avatar billede hubs Nybegynder
09. september 2004 - 14:33 #81
Behøver ikke nogen point jaze, så behold du dem bare til en anden god gang c",)

Er glad for at jeg kunne være med til at skabe total forvirring c",)

Hygge
Jacob
Avatar billede mugs Novice
09. september 2004 - 14:34 #82
Hvis du vil anvende en timer, kan du indtaste flg.:

TimerInterval: 3000
VedTimerUdløb: Aktiver din kode

Men det er absolut ikke nogen løsning der er at ønske.
Avatar billede jaze Nybegynder
21. september 2004 - 12:16 #83
Okay, men så får Mugs da bare lidt for ulejligheden c",)
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