/ 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
søgning i databaseprogram
Fra : Vinther


Dato : 28-12-05 12:26

Hej.

Jeg har fået den adresse som vist er et godt sted at få hjælp til sin
problemer.


Jeg brugere Delphi2005 og Win XP.

Jeg har lavet en database med en 5 felter i.

Mit program skal bestå af to forme.

Den første form er brugere fladen hvor en dbgrid er i.

Der bliver vist en liste over alle de ting der er skrevet i databasen. Det
har jeg fået frem.

Den anden form er en søgform med nogle felter og en søg knap og en annuller
knap.

Der er 5 felter man kan skrive i fordi det passer til de antal felter der er
i databasen.

Hvordan kan jeg få sådan at når jeg skriver noget i et felt så og klikker
søg så er det kun de ting der er fremme i dbgrid på form 1. Og foreksempel
hvis jeg har skrevet i fler felter så er det også kun dem der passer til det
man har ind tastet der skal med i db grid.

Mange 1000 tak for et svar.

P.S: Beklager min mangelfulde stavning men jeg får ik så gode kakartere i
det.



 
 
Vinther (28-12-2005)
Kommentar
Fra : Vinther


Dato : 28-12-05 12:27

"Vinther" <2584431m002@FJERNstofanet.dk> skrev i en meddelelse
news:43b2764d$0$11700$ba624c82@nntp02.dk.telia.net...
> Hej.
>
> Jeg har fået den adresse som vist er et godt sted at få hjælp til sin
> problemer.
>
>
> Jeg brugere Delphi2005 og Win XP.

hej igen. jeg har kun delphi 6. det er ikke 2005 alligevel



Brian Andersen \(www~ (28-12-2005)
Kommentar
Fra : Brian Andersen \(www~


Dato : 28-12-05 12:44

Jeg går ud fra du bruger BDE'en? Og, ikke en SQL database?

Du kan prøve at kigge på Filter property'en på TTable komponenten. Hvis vi
leger du har et indtastningsfelt kaldet Edit1 og en database kaldet Table1,
så kunne du gøre følgende når du aktivere søgningen:

Table1.Filtered := True;
Table1.Filter := 'Age = ' + IntToStr(Edit1.Text);

Feltet Age er så en af de fem felter du har i din database.

Skal du har flere søgekriterier på, så skal du bruge paranteser og AND eller
OR. Et eksempel:

Table1.Filtered := True;
Table1.Filter := Format('(Age >= %s) and (Age <= %s)', [FromAgeEdit.Text,
ToAgeEdit.Text]);

Ellers kunne du også skifte over til at bruge SQL, men det kræver at du kan
finde ud af at bruge SQL, for du skal opbygge et lille script, som matcher
dine søgekriterier. Du kan eventuelt læse mere om det i hjælpen til TQuery.

Jeg håber du kan bruge mit svar.

/Brian



Vinther (28-12-2005)
Kommentar
Fra : Vinther


Dato : 28-12-05 13:25

hej med dig brian

jeg har fået det første til at virke.

Det med flere felter fik jeg ikke lige til at virke.

det er til en database over video film som jeg selv vil prøve at lave.

med felterne nummer, titel, genre, skuespiller, beskrivelse.


jeg har en ting mere.

når jeg ser listen over film i dbgriden så vil jeg gerne kunne vælge en ved
at klikke på linien og så skal der åbne en form med en beskrivelse af
filmen.

Jeg har lavet formen med felterne i.

og jeg har skrevet den kode her nede

procedure TformStartside.dbgridFilmCellClick(Column: TColumn);
begin
formFilm.Show;
formFilm.tableFilm.Filtered:= true;
formFilm.tableFilm.Filter:= 'nummer = ' +
(formStartside.dbgridFilm.Columns.Items(4));
end;

Det jeg gerne vil er, at det er den film som man klikker på som åbnes.

og 'nummer' er et felt i databasen. og kolonnen der hedder 4 i dbgridden
svarer til det felt.

Men det er helt kanon, at du har hjulpet mig. jeg er også næsten færdig nu.


"Brian Andersen (www.europeansoftwarehouse.com)" <x@x.x> skrev i en
meddelelse news:2Susf.3398$Cl2.94891@news000.worldonline.dk...
> Jeg går ud fra du bruger BDE'en? Og, ikke en SQL database?
>
> Du kan prøve at kigge på Filter property'en på TTable komponenten. Hvis vi
> leger du har et indtastningsfelt kaldet Edit1 og en database kaldet
> Table1, så kunne du gøre følgende når du aktivere søgningen:
>
> Table1.Filtered := True;
> Table1.Filter := 'Age = ' + IntToStr(Edit1.Text);
>
> Feltet Age er så en af de fem felter du har i din database.
>
> Skal du har flere søgekriterier på, så skal du bruge paranteser og AND
> eller OR. Et eksempel:
>
> Table1.Filtered := True;
> Table1.Filter := Format('(Age >= %s) and (Age <= %s)', [FromAgeEdit.Text,
> ToAgeEdit.Text]);
>
> Ellers kunne du også skifte over til at bruge SQL, men det kræver at du
> kan finde ud af at bruge SQL, for du skal opbygge et lille script, som
> matcher dine søgekriterier. Du kan eventuelt læse mere om det i hjælpen
> til TQuery.
>
> Jeg håber du kan bruge mit svar.
>
> /Brian
>



Uffe Kousgaard (28-12-2005)
Kommentar
Fra : Uffe Kousgaard


Dato : 28-12-05 14:03

"Vinther" <2584431m002@FJERNstofanet.dk> wrote in message
news:43b28427$0$12400$ba624c82@nntp02.dk.telia.net...
>
> når jeg ser listen over film i dbgriden så vil jeg gerne kunne vælge en
> ved at klikke på linien og så skal der åbne en form med en beskrivelse af
> filmen.

Du kan bare lave en DBMemo på samme form som der hvor du har en dbgrid. Så
skal den pege på et memo-felt i databasen.

hilsen
Uffe



Vinther (28-12-2005)
Kommentar
Fra : Vinther


Dato : 28-12-05 14:12

"Uffe Kousgaard" <oh@no.no> skrev i en meddelelse
news:43b28d21$0$84036$edfadb0f@dtext01.news.tele.dk...
> "Vinther" <2584431m002@FJERNstofanet.dk> wrote in message
> news:43b28427$0$12400$ba624c82@nntp02.dk.telia.net...
>>
>> når jeg ser listen over film i dbgriden så vil jeg gerne kunne vælge en
>> ved at klikke på linien og så skal der åbne en form med en beskrivelse af
>> filmen.
>
> Du kan bare lave en DBMemo på samme form som der hvor du har en dbgrid. Så
> skal den pege på et memo-felt i databasen.

ja er selvføli også rigtig nok. havde jeg heller ik tænkt på.

men jeg vil nu gerne stadig kunne åbne en film ved at klikke på linien så
jeg har desværre stadig det andet problem med den kode jeg skrev herinde



Brian Andersen \(www~ (28-12-2005)
Kommentar
Fra : Brian Andersen \(www~


Dato : 28-12-05 14:52

Hej igen,

jeg er glad for at kunne være til hjælp.

Prøv følgende:

I doubleclick event handler'en på din Grid sørger du for at åbne din "Editor
Form". Jeg ville konstruere det på følgende måde:

1. Indsæt en TDataSource på din Editor Form (DataSource1) uden at linke den
til nogen tabel!
2. Indsæt DBEdit's til dine fire fritekst felter (nummer, titel, genre,
skuespiller)
3. Indsæt en DBMemo til feltet beskrivelse
4. I DataSource property'en til de fem skærmkontroller linker du til
DataSource1
5. Husk også at sætte DataField property'en på dine skærmkontroller, så
DBEdit1 eksempelvis er dit nummer felt, osv.
6. Skriv en procedure der ser ud som følgende:

function TEditorForm.ShowModalEx(DataSet: TDataSet): Integer;
begin
DataSource1.DataSet := DataSet;
Result := ShowModal;
end;

På din Main Form (der hvor din grid er) inkluderer du så i din uses sætning
i Implementeringsdelen din "Editor Form.pas" unit. Herefter overstyrer du
grid'ens Doubleclick event og skriver følgende kode:

....
var
Dlg: TEditorForm;
begin
Dlg := TEditorForm.Create(nil);
try
Dlg.ShowModalEx(Table1);
finally
Dlg.Free;
end;
end;

Sæt eventuelt et par knapper på formen, så du afslutte den. Ellers kan du
bare trykke på Krydset oppe i højre hjørne.

/Brian



Vinther (28-12-2005)
Kommentar
Fra : Vinther


Dato : 28-12-05 17:58

"Brian Andersen (www.europeansoftwarehouse.com)" <x@x.x> skrev i en
meddelelse news:3Kwsf.3403$Cl2.95453@news000.worldonline.dk...
> Hej igen,
>
> jeg er glad for at kunne være til hjælp.
>
> Prøv følgende:
>
> I doubleclick event handler'en på din Grid sørger du for at åbne din
> "Editor Form". Jeg ville konstruere det på følgende måde:
>
> 1. Indsæt en TDataSource på din Editor Form (DataSource1) uden at linke
> den til nogen tabel!
> 2. Indsæt DBEdit's til dine fire fritekst felter (nummer, titel, genre,
> skuespiller)
> 3. Indsæt en DBMemo til feltet beskrivelse
> 4. I DataSource property'en til de fem skærmkontroller linker du til
> DataSource1
> 5. Husk også at sætte DataField property'en på dine skærmkontroller, så
> DBEdit1 eksempelvis er dit nummer felt, osv.
> 6. Skriv en procedure der ser ud som følgende:
>
> function TEditorForm.ShowModalEx(DataSet: TDataSet): Integer;
> begin
> DataSource1.DataSet := DataSet;
> Result := ShowModal;
> end;
>
> På din Main Form (der hvor din grid er) inkluderer du så i din uses
> sætning i Implementeringsdelen din "Editor Form.pas" unit. Herefter
> overstyrer du grid'ens Doubleclick event og skriver følgende kode:
>
> ...
> var
> Dlg: TEditorForm;
> begin
> Dlg := TEditorForm.Create(nil);
> try
> Dlg.ShowModalEx(Table1);
> finally
> Dlg.Free;
> end;
> end;
>
> Sæt eventuelt et par knapper på formen, så du afslutte den. Ellers kan du
> bare trykke på Krydset oppe i højre hjørne.

oki. tak for det igen.

men jeg vil stadig også gerne hører om du eller andre ved hvordan man henter
indholdet i et felt i dbgriden

procedure TformStartside.dbgridFilmCellClick(Column: TColumn);
begin
formFilm.Show;
formFilm.tableFilm.Filtered:= true;
formFilm.tableFilm.Filter:= 'nummer = ' +
(formStartside.dbgridFilm.Columns.Items(4));
end;

Her prøver jeg at hente indholdet af kolonne4 i den post som jeg har klikket
på men min kode fungerer ikke.

er det ikke colums.items(x) som jeg skal bruge her (hvor x er
kolonnenummeret)




Brian Andersen \(www~ (28-12-2005)
Kommentar
Fra : Brian Andersen \(www~


Dato : 28-12-05 21:26

> men jeg vil stadig også gerne hører om du eller andre ved hvordan man
> henter indholdet i et felt i dbgriden
>
> procedure TformStartside.dbgridFilmCellClick(Column: TColumn);
> begin
> formFilm.Show;
> formFilm.tableFilm.Filtered:= true;
> formFilm.tableFilm.Filter:= 'nummer = ' +
> (formStartside.dbgridFilm.Columns.Items(4));
> end;
>
> Her prøver jeg at hente indholdet af kolonne4 i den post som jeg har
> klikket på men min kode fungerer ikke.
>
> er det ikke colums.items(x) som jeg skal bruge her (hvor x er
> kolonnenummeret)

Nej, den løsning kan du ikke bruge. Columns henter kun properties for den
enkelte kolonne: Feltnavn, osv. Måden at hente værdien i DBGrid'ens kolonne
4 er ved at hente den fra det aktuelle felt i din TTable komponent.

Et eksempel:

procedure TformStartside.dbgridFilmCellClick(Column: TColumn);
begin
formFilm.Show;
formFilm.tableFilm.Filtered:= true;
formFilm.tableFilm.Filter:= 'nummer = ' +
FormStartSide.Table1.FieldByName('Nummer').AsString;
end;

Eller:

procedure TformStartside.dbgridFilmCellClick(Column: TColumn);
begin
formFilm.Show;
formFilm.tableFilm.Filtered:= true;
formFilm.tableFilm.Filter:= 'nummer = ' +
formStartside.dbgridFilm.DataSource.DataSet.FieldByName('Nummer').AsString;
end;

/Brian



PØLLE (29-12-2005)
Kommentar
Fra : PØLLE


Dato : 29-12-05 00:02

Hej Vinther

Din kommentar "P.S: Beklager min mangelfulde stavning men jeg får ik så gode
kakartere i det.", vil jeg svare på disse forskellige måder:

1. En hver fugl fløjter med sit næb. Forstået på denne måde: "Man gør det så
godt man kan, men man gør det trods alt".

2. Det er bedre, at du laver nogle grove fejl, end gemmer dig ved slet ikke
at skrive.

Fat mod kammarat, det skal nok gå, vi skal nok forstå, hvad der står.
I øvrigt kan ingen stave korrekt, nogen er bedre og andre er dårligere end
andre, sådan er det i alle livets forhold. Du har sikkert dine stærke sider.

PØLLE (Peter)



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