Avatar billede Slettet bruger
28. april 2005 - 00:19 Der er 27 kommentarer og
1 løsning

record ændring = dato + sammenlign dbedit med pc ur

når en record ændres indsættes datoen for ændringen i et dbmemofelt - hvordan gør man det?

spørgsmål 2:

sammenlign dbedit12(felt for fødselsdag) med pc ur hvis forskellen er 12 måneder så lægges +1 til dbedit11(felt for alder) - hvordan gør man det?

100 pr spørgsmål
Avatar billede doc404 Novice
28. april 2005 - 03:04 #1
Hvis du kan finde ud af at opdatere en record, kan du sikkert også finde ud af, at sætte et felt = now() - evt. hvja. FormatDateTime().

D7 har i DateUtils en funktion, der hedder MonthsBetween(Now,Then) - tag et kig på den.
Avatar billede Slettet bruger
28. april 2005 - 07:51 #2
jeg har D5 og derfor ikke DateUtils
Avatar billede kroning Nybegynder
28. april 2005 - 08:42 #3
Hvad bruger du, BDE og TTable eller hvad?
Avatar billede Slettet bruger
28. april 2005 - 11:23 #4
ja en table uden bde det er en 3 parts database
Avatar billede Slettet bruger
28. april 2005 - 13:53 #5
hvis jeg skriver nedenstående får jeg 30-12-1899

var
  date : TDateTime;
  str : string;
begin
  Date := Time;
  str := dateToStr(Date);
  Rettelse.Text := str;
end;
Avatar billede Slettet bruger
28. april 2005 - 14:01 #6
ups kan da bare skrive:

  Rettelse.Text := DateToStr(Date);

så virker det
Avatar billede Slettet bruger
28. april 2005 - 14:03 #7
så er det stadig spørgsmål 2 jeg ikke kan finde ud af
Avatar billede kroning Nybegynder
28. april 2005 - 14:26 #8
Nu kender jeg ikke dit program men kunne du bruge en function der retunere en alder når den gives en fødselsdag?
Avatar billede kroning Nybegynder
28. april 2005 - 15:34 #9
Nå, nu har jeg lige lavet den så får du den uanset om du kan bruge den eller ej :-)

function GetAlder(fDato : TDate) : integer;
var
  fYear,fMonth,fDay,
  Year,Month,Day : word;
begin
  DecodeDate(fDato,fYear,fMonth,fDay);
  DecodeDate(Date,Year,Month,Day);
  Result:=Year-fYear;
  if ((fMonth=Month) and (fDay>Day)) or (fMonth>Month) then
    Dec(Result);
end;
Avatar billede Slettet bruger
28. april 2005 - 18:37 #10
jo den kunne godt bruges - men hvordan kaldes den funktion og hvordan indsættes resultatet i en dbedit - result kunne det være min dbedit? undskyld hvis jeg spørger "dumt"
Avatar billede kroning Nybegynder
28. april 2005 - 18:50 #11
Den gang jeg brugte dbedit og andre db komponenter (hvilken jer er holdt op med da jeg syntes de er noget skrammel) satte jeg aldrig en værdi ved at ændre på dbedit men ændrede i stedet i tabellen, f.eks.:
Du har en dbedit der er linket til feltet "Alder" i din Table, feltet alder er af typen integer:

Table.FieldByName('Alder').AsInteger:=GetAlder(dbedit12.text);
Avatar billede kroning Nybegynder
28. april 2005 - 19:58 #12
Hov, jeg mener:
Table.FieldByName('Alder').AsInteger:=GetAlder(strtodate(dbedit12.text));

eller hvis datoen skal sendes til GetAlder funktionen så skal der rettes lidt i den.
Avatar billede kroning Nybegynder
28. april 2005 - 19:59 #13
Damn, der skulle stå:
eller hvis datoen skal sendes til GetAlder funktionen som en streng så skal der rettes lidt i den.
Avatar billede Slettet bruger
30. april 2005 - 23:40 #14
hmm synes ikke jeg kan få det til at virke datoen(forskellen) skal vel laves om til integer for at kunne sætte den ind i tabellen (alder)
Avatar billede kroning Nybegynder
02. maj 2005 - 16:25 #15
Funktionen GetAlder retunere en integer så hvis feltet i din tabel er en integer så burde den lige være til at sætte ind.
Avatar billede Slettet bruger
02. maj 2005 - 20:54 #16
jo men bruger jeg koden får jeg en fejl på at 48 ikke er et datoformat min 2 felter
hedder:
dbedit11(alder hvor der står 48)
dbedit12(dato/år)
Avatar billede kroning Nybegynder
02. maj 2005 - 20:58 #17
Hvordan ser din kode ud?
Avatar billede Slettet bruger
02. maj 2005 - 21:38 #18
Table1.FieldByName('alder').AsInteger:=GetAlder(strtodate(dbedit11.text));
Avatar billede kroning Nybegynder
03. maj 2005 - 20:24 #19
Var det ikke dbedit12 der indeholdt datoen?
Avatar billede Slettet bruger
03. maj 2005 - 21:15 #20
jo

Table1.FieldByName('alder').AsInteger:=GetAlder(strtodate(dbedit12.text));

ingen her når koden kører kan bare ikke se at der sker noget i feltet alder hvor der skulle lægges 1 48 hvis der er 12 måneder i forskel
Avatar billede kroning Nybegynder
03. maj 2005 - 21:20 #21
functionen GetAlder giver dig en alder ud fra en fødselsdato, der bliver ikke regnet på noget med 12 måneder eller lagt 1 til nogen steder.
Avatar billede Slettet bruger
03. maj 2005 - 21:35 #22
ok

hvordan får jeg så resultatet fra (getalder) i feltet dbedit11
Avatar billede kroning Nybegynder
03. maj 2005 - 22:54 #23
Sådan:
Table1.FieldByName('alder').AsInteger:=GetAlder(strtodate(dbedit12.text));

jeg går ud fra at dbedit11 er linket til feltet alder i databasen så når du ændre på alder i databasen så ændres dbedit11 automatisk.
Avatar billede Slettet bruger
04. maj 2005 - 20:59 #24
undskyld kroning jeg havde helt misfrostået, det er sgu da indlysende når jeg ændre i datoen eller laver en ny record at resultatet "alder" bliver tilført feltet alder.

det er en god ide og en som jeg kan bruge, jeg har sikkert ikke formuleret mig korrekt ----er det ikke muligt at at automatisere den funktion så hele datasettet bliver rettet automatisk uden at man skal kalde funktionen seperat for hver record.

prøver lige at formulere mig bedre..... hvis man har mange personer i endatabase som er tilføjet over en årrække, så er det besværligt at rette alle record "alder" det som jeg var ude efter var en automation - jeg ved ikke lige hvordan det skal gøres og om hvis man laver det ved start af programmet ville det ikke tage en del tid - eller er der en smartere måde at gøre det på?
Avatar billede Slettet bruger
04. maj 2005 - 21:08 #25
skal lige sige at funktionen er tilføjet mit program og det virker fortrinligt.
Avatar billede kroning Nybegynder
04. maj 2005 - 22:07 #26
Du kunne droppe alder i din database og i stedet lave en Calculated field. Eller (næsten det samme), du kunne droppe alder i din database og ændre dbedit11 til en alm. TEdit, i f.eks. OnDataChange kunne du så udfylde TEdit´en med alder vha. GetAlder funktionen.
Avatar billede Slettet bruger
05. maj 2005 - 01:22 #27
oki smid lige et svar så tråden kan lukkes
Avatar billede kroning Nybegynder
05. maj 2005 - 20:03 #28
ok
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
Kurser inden for grundlæggende programmering

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