09. december 2001 - 14:03Der er
15 kommentarer og 1 løsning
Delphi / MS Access
Hej...
Lad os sige, at jeg har en database \"DB1\" med en tabel der hedder \"Info\" indeholdende felterne Number og Tekst. Hertil bruger jeg så TDatabase og TTable.
Normalt vil man bruge TQuery til at hente info, fx:
// Query1.Text := \'select * from Info order by Number\'; // Query1.Open; // Query1.ExeSQL; // Result := Query1.FieldByName(\'Tekst\').AsString;
For et års tid siden gjorde jeg det så på en anden måde, nemlig uden brug af TQuery. Problemet er, at jeg ikke kan huske hvordan - der var en ting eller to man lige skulle gøre, før man kunne gøres sådan her:
// Result := InfoTableTekst.AsString;
Disse 2 metoder havde helt den samme funktion - TQuery er mere \"kodemæssigt\" rigtigt, men det andre hurtigere med mindre kode.
Er der nogen der kan hjælpe mig til hvad det er man skal gøre, før det virker?
Du kan også bruge Table komponenterne, men det er en noget anden teknik end Query, der dropper du bare et Table komponent på din form + En DataSource som du tilforordner tol din Tabel.
Herefter kan du bruge DBKomponenterne til at læse dine felter med, og det sker ganske\"rigtigt\" bag om rykken på dig
Ja ved det.. men hvis man både skal sætte ind og hente multiple times i samme funktion, kræver det minimum 2 TQuery\'s så.
Med det jeg \"leder efter\" kan man både sige:
No := Query1.FieldByName(\'Number\').AsInteger;
og
Query1.FieldByName(\'Number\').AsInteger := 21;
Og den henter/gemmer det direkte i databasen.
Jeg ved godt denne metode er meget lidt kendt, så med mindre der er en der ved præcis hvad jeg taler om vil jeg gerne (uden at være uhøflig) frabedes svar, der giver eksempler på andre metoder end den jeg leder efter.
Jeg kender godt TQuery, men i dette tilfælde er det ikke den jeg vil bruge - sorry ppl :)
Jeg siger skam ikke, at din viden ikke er tilstrækkelig, kun at jeg vil gøre det uden TQuery :)
Er det med TDatasource eller andet table komponent jeg kan gøre det jeg ønsker, vil jeg meget gerne se eksempel på hvordan *SS*
Du er inde på noget rigtigt med din sidste kommentar - og det er den mest normale måde at bruge table komponent på, nemlig:
No := Table1.FieldByName(\'Number\').AsInteger;
Men jeg ved det kan gøres sådan her:
Table1TableNumber.AsInteger := 21;
Jeg ved godt du tænker \"Hvad hulen er forskellen, funktionen er den samme\" og jeg forstår dig - det er bare måden man gør det på jeg mangler. Kunne fint bruge den anden måde, og det ender det nok også med hvis jeg ikke finder ud af det på den anden måde hehe.. men vil gerne vide hvordan :)
Ja så kan man jo bruge Index navne lidt klippet fra Delphi hjælpen
Table1.Active := False;
Table1.Exclusive := True;
{ Get the current available indices }
Table1.IndexDefs.Update; { Find one which combines Customer Number (\'CustNo\') and Order Number (\'OrderNo\') } for I := 0 to Table1.IndexDefs.Count - 1 do if Table1.IndexDefs.Items[I].Fields = \'CustNo;OrderNo\' then { set that index as the current index for the table } Table1.IndexName := Table1.IndexDefs.Items[I].Name; Table1.Exclusive := False;
Det er sådan set bare det jeg i bund og grund er ude efter.. Altså er der \"et-eller-andet\" der skal gøres med TTable properties eller noget, før det kan udføres på denne måde.
(Undskyld jeg holder fast på det Morten, men det er denne specifikke metode jeg er ude efter)
cope21 >> er lige kommet hjem - kunne ikke la\' vær\' med en kikker ! dit sidste svar ligne det jeg plejer at gøre - dobbeltklikker på mit TTable-object og vælger Add, markerer det felt (Number) jeg har brug for, hvorefter, jeg kan referere til Table1NUMER.AsInteger...
jekk, hvis du var en pige (det går jeg ikke ud fra du er) fik du sq et kys hehe - det var LIGE det jeg var ude efter!! :)
Hvis du lige skriver som et \"svar\" får I lige en håndfuld point hver - Morten for hans indsats, det er næsten synd ikke at give ham, håber det er ok :)
Ok, så håber jeg det er ok, at Morten får bunken :) Og tak!!
Synes godt om
Ny brugerNybegynder
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.