30. april 2003 - 16:23Der er
18 kommentarer og 1 løsning
Tilføj ny record skal tilføje ny record igen
Jeg har en subform, hvori jeg lagrer EmployeeID, Year, Returned1, Returned2. Denne findes i mit Employee-vindue og indtastning ser typisk således ud: (alle værdier vælges fra combobox'e) Year | Returned1 | Returned2 2001 | Yes | Yes 2002 | Yes | No 2003 | N/A | Yes 2004 | No | No ------- Ved valg af N/A og Yes for året 2003 skal en ny record automatisk tilføjes for år 2004 med NO og No i begge felter.
Jeg vil nemlig kunne søge på hvilke medarbejdere der ikke har returneret det ønskede for et givent år.
Lige nu er der ikke tastet noget for nogen medarbejdere - nogen ideer til hvorledes jeg får lagret 2002, No og No for alle eksisterende medarbejdere?
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
>> Terry Super! Det er et godt skridt på vejen. Jeg forestiller mig dog at den nye record kun skal tilføjes hvis man befinder sig på LastRecord. Noget i stil med if me.nextrecord = NewRecord then 'hvordan skal dette se ud? docmd.runsql "INSERT into YourTable ([Year], Returned1, Returned2) VALUES (" & (me.Year + 1) & ", 'No', 'No')" else msgbox "Kun når man markerer/ændrer det seneste år skal data for næste år tilføjes" end if
U.K>Just want to make sure I understand correctly! Do you want to ADD a record when you select a record (the last) OR when you ADD a record and the following is true?
If me.Returned1 = "N/A" and me.Returned2 = "Yes" Then
>> Terry Duer ovenstående eksempel også hvis det kun er den sidste record for den pågældende medarbejder? Det er jo ikke sikkert at det er den absolut sidste record i tabellen. Bør der være en form for DCount("*","MyTable","EmployeeID = "&EmployeeID) ? Eller er det ligemeget? Jeg spørger fordi jeg ikke har mulighed for at teste dit eksempel før i eftermiddag.
If Me.CurrentRecord = DCount("*", "YourTable", ","EmployeeID = "& me.EmployeeID) Then MsgBox "Last record"
This is assuming that on the form you are only showing records for a specific employee and that you have a field = me.EmployeeID on th eform and also in the table
>> Terry Du har hjulpet mig godt på vej, men der er desværre et par detaljer med SQLen der driller. Når man markerer sidste record (eller ændrer en værdi i sidste record), tilføjes en ny record, hvor Year er 1 større end sidste record (Year+1).
Ovenstående If-sætning virker fint på LastRecord, men jeg kan ikke tilføje en ny record, med det nye årstal korrekt? Det skyldes måske at min InsertInto SQL er ufuldstændig? docmd.runsql "INSERT into YourTable ([Year], Returned1, Returned2) VALUES (" & (me.Year + 1) & ", 'No', 'No')"
Problemet er at jeg har følgende felter i "YourTable": ID (Autonummer), EmployeeID (Tal), Year (Tal), Returned1(Tekst), Returned2(Tekst) docmd.runsql "INSERT into YourTable ([EmployeeID], [Year], Returned1, Returned2) VALUES (" & (me.EmployeeID) & ", " & (me.Year + 1) & ", 'No', 'No')" Mangler der ikke en angivelse af ID-feltet i VALUES-delen af SQLen? Eller er det ligemeget, når det er et autonummer? I hvert fald genereres den nye record ikke korrekt - håber at du kan hjælpe, som du plejer ;o)
You don not need your autonumber field! Are there other fields which MUST be entered?
An idea is to see what the SQL looks like. Using the mouse mark from "INSERT.... to ...)" Then copy this to the debug window (CTRL+G) opens the window (CTRL+C) copies (CTRL+V) pastes.
Then place a ? before the string and press return. If some of the variables are not filled out then you should see this. Also if any of the fields are strings then they must have '' aroind them. And in th ecase of yes and no. If these are boolean values then they should be 0 and -1 and NOT 'No' or 'Yes'
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.