14. februar 2005 - 11:47Der er
30 kommentarer og 1 løsning
Er tilføjelsesforespørgslen allerede kørt?
Hvis jeg nu har en tilføjelsesforespørgsel, som bliver oprettet ud fra årstal og uge, hvordan tjekker jeg så om denne allerede er kørt? Jeg skal jo have en meddelsesboks ind, hvis det er tilfældet.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
hmm, det er meget svært at svare på, da der er mange muligheder, afhængigt af dit system.
Men én måde, er jo at kontollere om de poster, som du vil tilføje, allerede er oprettet i den anden tabel.
Hvis du har defineret, at uge og år skal være unikt i tabellen, så er problemet løst af sig selv, idet du så ikke kan oprette pposterne 2 gange. Er det en mulighed?
Synes godt om
Slettet bruger
14. februar 2005 - 12:20#3
tj>nej!~( mugs>jeg er ikke sikker på, at du læst spørgsmålet rigtigt...
Men uanset hvad, så vil msgbox fremkomme når forespørgslen er kørt, og det er så ligegyldigt om der er tilføjet poster eller ej. Sådan læste jeg spørgsmålet.
Men hvad er det du vil kontrollere? Hvis du vil checke hvor mange poster der er tilføjet kan du jo anvende Dcount funktionen både før og efter forespørgslen er kørt, og så blot subtrahere disse 2 variabler til slut.
spg->havde du ikke mulighed for at kontrollere om nogle af de poster, som skal tilføjes, allerede LIGGER i tabellen? Det er den sikreste måde.
Er det en tilføjelsesforespørgsel, som kun skal køres ÉN gang og så aldrig mere? Eller skal den køres flere gange - evt med forskellige data?
Hvis det f.eks er nogle data som blot skal tilføjes ved opstart én gang og så aldrig mere (f.eks. ved distribution af ny frontend), så kan du skrive en lille notat herom i registeringsdatabasen. På den måde kan du undgå at køre den igen.
Eller der er den frække måde, hvor du simpelthen slette forespørgslen, når den er kørt første gang. Derved kan den jo ikke køres igen :o)
Sig til, hvis én af ovenstående løsninger skal uddybes...
Synes godt om
Slettet bruger
14. februar 2005 - 12:42#6
tj> hvordan tjekker jeg om årstal og uge findes i tabellen? Jeg kører nemlig kun tilføjelsen en gang om ugen og aldrig den samme uge (indenfor et år). Jeg kan ikke slette forespørgslen først fordi der kan være skrevet yderligere i tabellen.
If Dcount("*", "Din tabel", "Årstal = Year(Date()) And Uge = " & Format(Date, "ww",vbUseSystemDayOfWeek,vbUseSystem)) = 0 then docmd.Openquery "Din forespørgsel" else msgbox "Forespørgslen er allerede kørt en gang i denne uge!", vbinformation endif
Synes godt om
Slettet bruger
14. februar 2005 - 12:46#8
jeg prøver!~)
Synes godt om
Slettet bruger
14. februar 2005 - 13:00#9
Mit tilfælde er lidt anderledes, her indtastes et år og en uge, som tal. Dvs. det skal ca. se sådan ud:
If DCount("*", "Bemandingsplan", Aar = [forms]![fanebladbemandingsplan]![bemandingsunderformular]![aar] And Uge = [forms]![fanebladbemandingsplan]![bemandingsunderformular]![uge] = 0 Then
If DCount("*", "Bemandingsplan", "Aar = [forms]![fanebladbemandingsplan]![bemandingsunderformular]![aar] And Uge = [forms]![fanebladbemandingsplan]![bemandingsunderformular]![uge]") = 0 Then
Synes godt om
Slettet bruger
14. februar 2005 - 13:07#11
Du har annuleret den forrige handling???
Private Sub OpretBemandingsuge_Click() If IsNull(Me.Uge) Or IsNull(Me.Aar) Then MsgBox "Der skal indtastes den pågældende uge og et årstal" Else If DCount("*", "Bemandingsplan", "Aar = [forms]![fanebladbemandingsplan]![bemandingsunderformular]![aar] And Uge = [forms]![fanebladbemandingsplan]![bemandingsunderformular]![uge]") = 0 Then DoCmd.SetWarnings False DoCmd.OpenQuery "TilfojTilListe" DoCmd.OpenQuery "OpretUge" DoCmd.SetWarnings True DoCmd.RunCommand acCmdRefreshPage MsgBox "Bemandingsplan for uge " & [Uge] & ", " & [Aar] & " er oprettet" Else MsgBox "Forespørgslen er allerede kørt en gang for denne uge!" End If End If End Sub
Din syntaks duer også. Men så længe der benyttes den fulde reference til objektet (som her), så kan det hele indlejres i strengen. det har den fordel, at man ikke behøver at tage hensyn til datatypen. Hvis f.eks. Aar var af datatypen tekst, så skulle din syntaks jo laves om. Det er ikke nødvendigt med min.
Fordelen er endnu mere udtalt, hvis det drejede sig om dato-typer. VB har jo store problemer med datoer, da den har det med at by
Men det er godt nok en underlig fejlmeddelelse, der kommer.
spg-> Prøv lige at gør sætningen helt simpel:
If DCount("*", "Bemandingsplan", "Aar = 2005 And Uge = 6") = 0 Then
hmm, har du kigget i tabellen og sikret dig, at der ikke findes en post, hvor Aar og Uge er lig de angivne værdier? (Prøv evt at lave en forespørgsel, hvor du indsætter kriterierne.)
Du er også velkommen til at sende databasen til mig. Det begynder at blive svært at fejlfinde på denne måde ;)
Synes godt om
Slettet bruger
15. februar 2005 - 08:26#24
mugs>den talte 324 hvilket er alle poster i tabellen?
Synes godt om
Slettet bruger
15. februar 2005 - 08:29#25
[aar] og [uge] henviser sikkert til tabellen og ikke til de indtastningsfelter jeg har i formularen.
Synes godt om
Slettet bruger
15. februar 2005 - 08:32#26
Hver gang jeg henviser til indtastningsfelterne så kommer meddelsen: Du har annuleret den forrige handling
Msgbox DCount("*", "Bemandingsplan", "Aar = [aar] And Uge = [uge]")
Den siger bare, at 2005 = 2005, hvilket altid gælder.
Du skal enten bruge den lange:
If DCount("*", "Bemandingsplan", "Aar = [forms]![fanebladbemandingsplan]![bemandingsunderformular]![aar] And Uge = [forms]![fanebladbemandingsplan]![bemandingsunderformular]![uge]") = 0 Then
Eller den korte:
If DCount("*", "Bemandingsplan", "Aar = " & Me![aar] & " And Uge = " & Me![uge]) = 0 Then
Og hvis den lange ikke virker, så må fejlen ligge i referencen.
Så kan det være dit underformular-objekt, som er navngivet forkert. I stedet for "bemandingsunderformular", kan det hedde noget andet. Det er nemlig ikke altid, at underfomrular-objektet hedder det samme som formularen gør i database-vinduet.
Kig på underformular-objektets egenskab "Navn" for at finde ud af hvad der skal refereres til.
Synes godt om
Slettet bruger
15. februar 2005 - 08:53#30
Fejlen lå i referencen!~) Tak gutter og undskyld rodet...
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.