07. december 2000 - 16:25Der er
19 kommentarer og 1 løsning
Chekke om en dato allerede findes i en anden post
Hej Jeg har en database i access97 som styre booking af jobs og det køre helt fint, men jeg har et dumt problem som jeg håber nogen kan hjælpe med med, problemet er:
I den formular brugeren benytter til at indtaste nye poster e.t.c. er der et datofelt som ganske enkelt hedder dato feltet stammer fra en tabel. feltet \"Dato\" er formateret som dato,klokkeslet samt med inputmaske, dette er nødvendigt for at kunne sortere på feltet i feks rapporter e.t.c. Når brugeren når til feltet \"dato\" og indtaster en en aktuel dato skal der komme en meddelse hvis den indtastede dato allerede findes i en anden post.Der må godt være flere poster med den samme dato, blot brugeren for besked, når det indtræffer.
Jeg har prøvet at bruge en DlookUp metode, men det virke ikke når datofeltet er formateret som dato,klokkeslet, det giver en fejl om at datatyperne ikke stemmer overens.
Jeg er ikke nogen haj til vba, men kender lidt til det, det kan nævnes at DlookUp metode virker hvis blot det er et tekstfelt, men går desværre ikke. Det skal virke på før opdatering (Before_opdate)på datofeltet således at brugeren for beskeden når feltet forlades.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hej janbangm Jeg tror at dit svar kan fungere, det skal bare tunes lidt, jeg har prøvet dit kodeeks., men for fejlen \"variabel ikke erklæret, hvad skal der stå i første parantes (der hvor du skriver felt)
Okay det forstået den sidste fejl der kommer er \"Do Uden Loop der er et eller andet der kikser, jeg skriver nøjagtigt som du foreslår, arbejder videre med det
Det må jeg indrømme jeg ikke helt forstår. Har har if sætning på en linie ikke. Den felj plejer at kommen hvis Loop står inde i en if sætning, med det syntes jeg ikke skulle være tilfælde her
Ja du skal have End If flyttet op lige under fl = 1 ellers får du det ikke til at virke. Grunden til dette er, at if særningen er falsk vil access ikke komme til Loop sætning
alså Private Sub Dato_BeforeUpdate(Cancel As Integer) Dim R As Recordset Dim fl As Byte
Set R = CurrentDb.OpenRecordset(\"tbl_input\")
R.MoveFirst Do Until R.EOF
If R([Dato]) = Me.[Dato] Then fl = 1 End If R.MoveNext Loop
If fl = 1 Then MsgBox (\"datoen findes i forvejen\")
Din kode køre nu helt korrekt, der er dog et problem: da feltet er formateret som typen dato,klokkeslet, giver det fejlen \"datatypekonverteringsfejl\" fandens *SSS*, hvis jeg laver formatet for feltet om til tekst virker din kode perfekt, det tyder måske på en helt anden løsning??, jeg vil lade dette spørgsmål stå åbnet et par dage, måske der komme nogle gode indlæg. Din kode er dog helt rigtigt og kan sagtens bruges i andre sammehænge, hvis der ikke kommer flere indlæg vil jeg naturligvis sende dig point. Du skal have mange tak for dine glimrende indlæg.
her kan du se en kode der virker får fik jeg sammen fejl som du har indtil jeg satte DB_Open ... ind
<KODE START> Dim MyValue
Dim db As Database Dim rsSet As Recordset
igen: MyValue = Int((10000000 * Rnd) + 1) \' Frembring en tilfældig værdi mellem 1 og 1000000# \'Debug.Print MyValue Set db = CurrentDb() Set rsSet = db.OpenRecordset(\"TA_Key\", DB_OPEN_DYNASET) rsSet.FindFirst \"KeyID =\" & MyValue If rsSet.NoMatch Then
rsSet.AddNew rsSet(\"KeyID\") = MyValue rsSet.Update Else GoTo igen End If
Øv jeg kan ikke få det til at virke, jeg for hele tiden fejlen \"datatypekonverteringsfejl, opsummering er: Feltet hedder dato tabellen heder tbl_input feltet dato er af datatypen \"DatoKlokkeslet\" Formatet er kort datoformat der er inputmaske \"Kort datoformat\"
I formularen er feltet \"dato\" formateret på nøjagtigt samme måde som i tbl_input.
Pokkers til problem, hvis det bare er et tekstfelt fungere det fint.
iøvrigt skal der ikke skrives en ny dato, men blot komme med en msgbox der fortæller at der i forvejen er registreret et job på den indtastede dato, brugeren skal så blot fortsætte som intet var hændt hæ hæ noget speget dette her
Hvis du vil prøve det jeg foreslå er det Left det skal bruge. Hvis din dato starter med 071200 skal du lave en kode der se sådan ud
Dim ndato ndato = LEFT(me.[dato],6) Så for du trukket dato ud af feltet uden tidspunkt og kan så min anden kode ved at erstatter me.[dato] med ndato If R([dato]) = ndato Then
Måtte lige lægge mig med lidt influenza, men er på toppen igen det virker ikke helt efter hensigten, men jeg er kommet et godt stykke videre, hermed point til dig
Ret interessant.... Det er da noget, der kan bruges til noget..
mvh martens
Synes godt om
Ny brugerNybegynder
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.