/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Kan man lave en default værdi her?
Fra : Ukendt


Dato : 26-02-06 15:45

Hej.

Kan man lave en default værdi her:

datasource1.dataset.fieldByName('field1').value

lidt a la:

StrToIntDef(et-eller-andet, 0);

(Det jeg ønsker er at man får værdien 0, hvis feltet field1 er tomt.)



 
 
PØLLE (26-02-2006)
Kommentar
Fra : PØLLE


Dato : 26-02-06 20:10


For det første: "Er du musæumsmedarbejderen, er jeg musæumsstykket".

> datasource1.dataset.fieldByName('field1').value
For det første kan kan du forkorte din programmering fra
"datasource1.dataset.fieldByName('field1').value" til
datasource1.dataset['field1']", som er det samme.

Skal der præsenteres og er det TFloatfield, så angiver du Displayformat til
"#,##0.00;-#,##0.00;0.00", så vil du få 0,00, hvis feltet er 0;
eller
Skal der præsenteres og er det TIntegerfield, så angiver du Displayformat
til "#,##0;-#,##0;0", så vil du få 0, hvis feltets value er 0;
.... hvis jeg har forstået det rigtigt

PØLLE



Ukendt (26-02-2006)
Kommentar
Fra : Ukendt


Dato : 26-02-06 20:21

"PØLLE" <NoName@NoMail.com> skrev i en meddelelse
news:4401fd0a$0$15788$14726298@news.sunsite.dk...
>
> For det første: "Er du musæumsmedarbejderen, er jeg musæumsstykket".

Hej.

Ja jeg arbejder på Museum. Godt nok har programmeringen her dog ikke noget
med dette at gøre.

>> datasource1.dataset.fieldByName('field1').value
> For det første kan kan du forkorte din programmering fra
> "datasource1.dataset.fieldByName('field1').value" til
> datasource1.dataset['field1']", som er det samme.

Ja, det gør det da kun nemmere at overskue

> Skal der præsenteres og er det TFloatfield, så angiver du Displayformat
> til "#,##0.00;-#,##0.00;0.00", så vil du få 0,00, hvis feltet er 0;
> eller
> Skal der præsenteres og er det TIntegerfield, så angiver du Displayformat
> til "#,##0;-#,##0;0", så vil du få 0, hvis feltets value er 0;
> ... hvis jeg har forstået det rigtigt

Problemet er sådan set, at indholdet bliver hentet til en beregning.
Problemet er bare, at der fremkommer en fejl, hvis et af felterne er tomme
(null). Derfor vil jeg gerne hente defaultværdien 0 i tilfælde med tomme
(null) felter.

Fx. (udelukkende for at illustrere problemet)

procedure beregn;
var
resultat: real;
begin
Resultat:= datasource1.dataset['field1'] + datasource1.dataset['field2'] -
datasource1.dataset['field3'];
end;



Hauge (26-02-2006)
Kommentar
Fra : Hauge


Dato : 26-02-06 20:42

Hej
Museumsmedarbejderen wrote:
> Problemet er sådan set, at indholdet bliver hentet til en beregning.

Kan VAL bruges?

Mvh Hauge



--
For at verificere afsenderen af dette indlæg kan du klikke her:
<http://newscheck.smart-tech.dk/20060226194140@smart-tech.dk>
På samme domæne som afsenderen af dette indlæg, ses headerne.

PØLLE (26-02-2006)
Kommentar
Fra : PØLLE


Dato : 26-02-06 20:54


> Kan VAL bruges?
- Jeg ved det ikke - har nemlig aldrig brugt denne procedure.

PØLLE



Ukendt (26-02-2006)
Kommentar
Fra : Ukendt


Dato : 26-02-06 21:44

"Hauge" <hauge@CUTsmart-tech.dk> skrev i en meddelelse
news:20060226194140@smart-tech.dk...
> Hej
> Museumsmedarbejderen wrote:
>> Problemet er sådan set, at indholdet bliver hentet til en beregning.
>
> Kan VAL bruges?

Hej Hauge.

Kan jeg få dig til at uddybe ovenstående?

Jeg vil lige tilføje, at man ikke kan sætte default-værdien direkte inde i
databasen, da der er en begrænsning for hvor mange felter, man kan sætte
default værdier på og den er opbrugt



PØLLE (26-02-2006)
Kommentar
Fra : PØLLE


Dato : 26-02-06 21:13

Min kommentar "For det første: "Er du musæumsmedarbejderen, er jeg
musæumsstykket"." - er for lige at lave lidt pjat i al det tekniske.

Du skrev:
---------
procedure beregn;
var
resultat: real;
begin
Resultat:= datasource1.dataset['field1'] + datasource1.dataset['field2'] -
datasource1.dataset['field3'];
end;

Jeg ville gøre det sådan:
-----------------------
procedure beregn;
var
resultat: real;
begin
Resultat := StrToFloat(datasource1.dataset.findfield('field1').text)
+ StrToFloat(datasource1.dataset.findfield('field2').text) -
StrToFloat(datasource1.dataset.findfield('field3').text));
end;

Så sker der ikke noget ved, at
datasource1.dataset.fiendField('field1').Value = Null, det giver nemlig
datasource1.dataset.fiendField('field1').text = '0';
Det er ikke prøvet, men lige efter min hukommelse.

Du må ikke udskifte .text med .displaytext, der vil nemlig komme kommaer i
stedet for det engelske '.' og så går det hele krasat.
PØLLE



Ukendt (26-02-2006)
Kommentar
Fra : Ukendt


Dato : 26-02-06 21:45

"PØLLE" <NoName@NoMail.com> skrev i en meddelelse
news:44020bb1$0$15781$14726298@news.sunsite.dk...
> Min kommentar "For det første: "Er du musæumsmedarbejderen, er jeg
> musæumsstykket"." - er for lige at lave lidt pjat i al det tekniske.
>
> Du skrev:
> ---------
> procedure beregn;
> var
> resultat: real;
> begin
> Resultat:= datasource1.dataset['field1'] +
> datasource1.dataset['field2'] -
> datasource1.dataset['field3'];
> end;
>
> Jeg ville gøre det sådan:
> -----------------------
> procedure beregn;
> var
> resultat: real;
> begin
> Resultat := StrToFloat(datasource1.dataset.findfield('field1').text)
> + StrToFloat(datasource1.dataset.findfield('field2').text) -
> StrToFloat(datasource1.dataset.findfield('field3').text));
> end;
>
> Så sker der ikke noget ved, at
> datasource1.dataset.fiendField('field1').Value = Null, det giver nemlig
> datasource1.dataset.fiendField('field1').text = '0';
> Det er ikke prøvet, men lige efter min hukommelse.
>
> Du må ikke udskifte .text med .displaytext, der vil nemlig komme kommaer i
> stedet for det engelske '.' og så går det hele krasat.
> PØLLE

Hej Pølle.

Jeg vil prøve din måde.



Brian Andersen \(www~ (27-02-2006)
Kommentar
Fra : Brian Andersen \(www~


Dato : 27-02-06 07:35

> Jeg ville gøre det sådan:
> -----------------------
> procedure beregn;
> var
> resultat: real;
> begin
> Resultat := StrToFloat(datasource1.dataset.findfield('field1').text)
> + StrToFloat(datasource1.dataset.findfield('field2').text) -
> StrToFloat(datasource1.dataset.findfield('field3').text));
> end;

Hvad med at opfinde en procedure som følgende:

function AsNumber(AValue: Variant): Double;
begin
if AValue <> NULL then
Result := AValue else
Result := 0;
end;


Og, så løse problematiken sådan her:

procedure beregn;
var
Resultat: Double;
begin
Resultat :=
AsNumber(DataSource1.DataSet['field1']) +
AsNumber(DataSource1.DataSet['field2']) -
AsNumber(DataSource1.DataSet['field3]);
end;

Men hvorfor ik' bare kvalificere sig hele vejen? Altså
DataSource1.DataSet.FieldByName('Field1').AsFloat?

Ps. Real er en udgået datatype. Brug Double, da den beregner med Intel
Instruktioner og derfor væsentlig hurtigere og mere nøjagtig. Real er en
gammel Turbo Pascal datatype. Den blev opfundet, da Intel ikke havde Float
operationer i deres CPU'er.

/Brian



Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste