/ 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
Variabler fra en application til en udskri~
Fra : Ukendt


Dato : 28-02-06 19:25

Hej.

Jeg har haft det oppe og vende før, men jeg har så store problemer med det.

Jeg har et program, hvori jeg har gemt nogle data, bl.a. beregninger.
Dataene ligger ikke gemt i en database, men i variabler i selve
applicationen.

Nu har jeg således mit hyr med at få disse data smidt over i min udskrift.
Der er ingen problemer med at opnå forbindelse, hvis jeg havde brugt en
database, men jeg synes, at det er lidt tåbeligt at oprette en database
udelukkende til at fungere som bindeled for data mellem applicationen og
udskriften.

Er der folk heirnde, der har viden om, hvad der skal til for at opnå adgang
til udskriften med applicationens variabler

mvh Frederiksen



 
 
Finn Bindeballe (28-02-2006)
Kommentar
Fra : Finn Bindeballe


Dato : 28-02-06 20:40

hep....

ja du kan bruge println

With Sender as TBaseReport do
begin
SectionTop := 0.95;
SetFont('Arial',24);
Home;
ClearTabs;
SetTab(0.5,pjLeft,1.0,2,BOXLINENONE,0);
SetTab(NA,pjCenter,1.0,2,BOXLINENONE,0);
Print(#9'Skab');
    bold:=true;
    Println(skab.Skabsnummer);
    bold:=false;


der er eksempler med Demoerene...

/finn

Frederiksen (28-02-2006)
Kommentar
Fra : Frederiksen


Dato : 28-02-06 20:44

Hej Finn.

Tak for dit bidrag.

Men ovenstående kode - vedrører det RaveReport eller blot Delphi?

Jeg har nemlig lavet design og opstilling i RaveRaport til et større
stykke udskrift, hvor jeg skal bruge dataene fra variablerne?


Finn Bindeballe (01-03-2006)
Kommentar
Fra : Finn Bindeballe


Dato : 01-03-06 17:03

hey....

det er 'ren' delphi.... man skal sætte et par rave-dimser paa sin form,
lave en eventhandler, som saa skal 'tegne' udskriften..... det er ikke
særligt kompliceret......

/finn

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


Dato : 28-02-06 21:18

Brug et In-Memory DataSet. F.eks. TClientDataSet. Her vil du så kunne
oprette de felter der er behov fora t få ud på papir.

/Brian



Uffe Kousgaard (01-03-2006)
Kommentar
Fra : Uffe Kousgaard


Dato : 01-03-06 12:37

"Brian Andersen (www.europeansoftwarehouse.com)" <x@x.x> wrote in message
news:4404b011$0$24257$edfadb0f@dread14.news.tele.dk...
> Brug et In-Memory DataSet. F.eks. TClientDataSet.

TClientDataSet er ikke med i alle udgaver af Delphi. Alternativer er f.eks.
den gratis tkbmmemtable ("Made in DK").

hilsen
Uffe



Frederiksen (28-02-2006)
Kommentar
Fra : Frederiksen


Dato : 28-02-06 21:42

Hej Brian.

Det er vist sådan noget, jeg leder efter.

Har du en property eller lign., hvor jeg kan angive felterne


Brian Andersen \(www~ (01-03-2006)
Kommentar
Fra : Brian Andersen \(www~


Dato : 01-03-06 08:35

>> Har du en property eller lign., hvor jeg kan angive felterne

Fra et TClientDataSet double klikker du på komponenten, så får du Field
Editoren frem. Her højre klikker du og opretter dine felter manuelt.

I din form's/datamodule's constsructor skriver du så følgende:

ClientDataSet1.CreateDataSet;
ClientDataSet1.LogChanges := False;

Ps. Svarede jeg dig ik' også på dette spørgsmål den 18-01-2006 *s*?

/Brian



Frederiksen (01-03-2006)
Kommentar
Fra : Frederiksen


Dato : 01-03-06 16:35

Hej Brian.

Jo, der svarede du mig også. Men dels fangede jeg ikke pointerne
dengang og da det ikke var tvingene nødvendigt dengang, så udsatte
jeg det lidt og spurgte igen nu med håb om, at jeg forstod det denne
gang.

Og jeg tror, at det gav pote, så mange tak for hjælpen.


Frederiksen (01-03-2006)
Kommentar
Fra : Frederiksen


Dato : 01-03-06 22:19

Hej igen Brian.

Jeg var måske lidt for hurtig.

Jeg har indsat en TClientDataset

Følgende fejl opstår dog, når jeg forsøger at aktivere den:
TClientDataset missing data provider or data packet.

Har du en løsning her til også?


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


Dato : 02-03-06 08:42

>Følgende fejl opstår dog, når jeg forsøger at aktivere den:
>TClientDataset missing data provider or data packet.

>Har du en løsning her til også?

Jeps. Du kan ikke aktivere den som et almindeligt DataSet. I stedet skal du
højre klikke på komponenten og vælge Create DataSet (jeg går ud fra vi taler
om at fejlen opstår i design mode?). Create DataSet kommer først frem, når
der er felter i DataSet'et.

Hvis du blot prøver at aktivere DataSet'et med open eller Active := True, så
får du også ovenstående fejl.

Du skal skrive følgende i kode for at åbne dataset'et uden en provider:

ClientDataSet1.CreateDataSet;
ClientDataSet1.LogChanges := False;

Jeg håber du kan komme videre...

/Brian



Frederiksen (07-03-2006)
Kommentar
Fra : Frederiksen


Dato : 07-03-06 21:14

Hej Brian.

Det virker som det skal. Men jeg undrer mig over en ting.

Hvad er forskellen på at vælge FieldDef. i property panelet og vælge
field editor gennem højre musetast på en TClientDataset. Man kan
oprette felter begge steder.

Jeg vil også lige høre, om det udelukkende er spild af plads og
ressourcer at gemme data i variabler, når de alligevel gemmes i
virtuelle felter TClientDataset'et. Det er jo i sig selv en form for
variabler, idet datasene ikke lagres permanent.


Brian Andersen \(www~ (08-03-2006)
Kommentar
Fra : Brian Andersen \(www~


Dato : 08-03-06 08:48

Det virker som det skal. Men jeg undrer mig over en ting.
- Det er godt at høre...


Hvad er forskellen på at vælge FieldDef. i property panelet og vælge
field editor gennem højre musetast på en TClientDataset. Man kan
oprette felter begge steder.

- FieldDef property'en er en definering af det underliggende dataset's
fysiske felter. Altså de database felter, som det fysiske dataset består af.
- Fields property'en er en konkretisering/aktivering af et felt, så du kan
tilgå det via FieldByName.


Jeg vil også lige høre, om det udelukkende er spild af plads og
ressourcer at gemme data i variabler, når de alligevel gemmes i
virtuelle felter TClientDataset'et. Det er jo i sig selv en form for
variabler, idet datasene ikke lagres permanent.

Jeg ville droppe dine variabler, da det ville være dobbelt administration at
skulle vedligeholde dem to stedet. I stedet ville jeg skrive en Wrapper:

TReportVariables = class(TObject)
private
FDataSet: TDataSet;

function GetValue(Index: Integer): Variant;
procedure SetValue(Index: Integer; Value: Variant);
public
constructor Create(ADataSet: TDataSet);

property Name: Variant index 0 read GetValue write SetValue;
property Title: Variant index 1 read GetValue write SetValue;
property Telephone: Variant index 2 read GetValue write SetValue;
property Www: Variant index 3 read GetValue write SetValue;
end;


function TReportVariables.GetValue(Index: Integer): Variant;
begin
case Index of
0: Result := FDataSet['Name'];
1: Result := FDataSet['Title'];
2: Result := FDataSet['Telephone'];
3: Result := FDataSet['Www'];
end;
end;

procedure TReportVariables.SetValue(Index: Integer; Value: Variant);
begin
FDataSet.Edit;

case Index of
0: FDataSet['Name'] := Value;
1: FDataSet['Title'] := Value;
2: FDataSet['Telephone'] := Value;
3: FDataSet['Www'] := Value;
end;

FDataSet.Post;
end;


Alloker eventuelt din Wrapper i din Main form.

constructor TMainForm.Create(AOwner: TComponent);
begin
inherited;

FVariables := TReportVariables.Create(MyDataModule.ReportVariables);
end;

destructor TMainForm.Destroy;
begin
FVariables.Free;
inherited;
end;


Nu kan du så gøre følgende når eksempelvis navnet skal ændres:

FVariables.Name := S1 + S2 + S3;

Du behøver ikke hver gang skrive

DataSet.Edit;
DataSet.FieldByName('Name').AsString := S1 + S2 + S3;
DataSet.Post;


Jeg håber du ser ideen om at indkapsle dine problemstillinger.

/Brian



Søg
Reklame
Statistik
Spørgsmål : 177439
Tips : 31962
Nyheder : 719565
Indlæg : 6408072
Brugere : 218879

Månedens bedste
Årets bedste
Sidste års bedste