Avatar billede hugopedersen Nybegynder
10. november 2008 - 11:00 Der er 15 kommentarer og
1 løsning

Opdatering af data i grid

Jeg har et DBgrid på en form hvor jeg gerne ville kunne opdatere et felt efter at der er indtastet noget i det.
Feltet indeholder et navn og det vil jeg gerne opdatere til at være korrekt med store og små bogstaver (Fornavn Efternavn)
De store/små bogstaver har jeg en funktion til mener jeg, men lige at fange et felt i grid'et.................
Avatar billede kroning Nybegynder
10. november 2008 - 11:47 #1
Hvis du retter i din Table i stedet så vil navnet automatisk blive rettet i din DBGrid:

Table.FieldByName('Navn').AsString:='Det rettede navn';
Avatar billede hugopedersen Nybegynder
10. november 2008 - 13:00 #2
Det kunne jeg selvfølgelig, men da jeg arbejder på en MySQL server har jeg ikke en tabelkomponent sådan lige umiddelbart. Den skal der lidt programmering til at få fat på og så synes jeg det var nemmere at håndtere griddet hvis det kan lade sig gøre.
Avatar billede kroning Nybegynder
10. november 2008 - 13:20 #3
Hvorfra får griddet sine data?
Avatar billede hugopedersen Nybegynder
10. november 2008 - 13:27 #4
TMyQuery -> TMyQuery -> TDataSource -> TDBGrid
Avatar billede hrc Mester
10. november 2008 - 13:47 #5
Du kan bruge dit felts (Navn) OnGetText til at gøre dette. Du får en streng som parameter og det eneste du skal gøre er at konvertere strengen til store bogstaver med AnsiUpperCase

procedure TForm1.MyQueryGetText(Sender: TField; var Text: string; DisplayText: Boolean);
begin
  DisplayText := true;
  Text := AnsiUpperCase(Text);
end;

Men det er ikke så hurtigt som at rette alle felterne på en gang vha. en "update table"
end;
Avatar billede hugopedersen Nybegynder
10. november 2008 - 15:26 #6
Der fik jeg ikke lige fat på - hvad et det for et felt du her henviser til?
Avatar billede hrc Mester
10. november 2008 - 19:45 #7
Til at hente data har du enten en TQuery, en TTable eller en variant af disse.
Dobbeltklikker du på komponenten kommer der en lille dialog frem hvor alle datasættets felter kan laves til en komponent, dvs. I stedet for at skille skrive MyQuery.FieldByName('NAVN').AsString bliver der lavet en TField-komponent hvor det samme kan udføres således: MyQueryNAVN.AsString.
Det letteste er at højreklikke i dialogen og vælge menupunktet "All fields". Vælger du nu NAVN-feltet du se det har nogle events - og en af dem er OnGetText.
Avatar billede hugopedersen Nybegynder
11. november 2008 - 06:48 #8
Det 2 komponenter TMyConnection og TMyQuery er fra Devalts MySQL DAC. Jeg skal lige have checket om de kan det du beskriver.
[min version 2009 er stadig i restordre :-) ]
Avatar billede hrc Mester
11. november 2008 - 09:41 #9
Jeg gætter på TMyQuery nedarver fra TDataSet og så skulle den være der. Jeg fik D2009'er til download, 30 minutter efter chefen havde ladet Masterkortet bløde.

Henter man den direkte hos Emba... arrh, Codegear så har man den med det samme.
Avatar billede hugopedersen Nybegynder
11. november 2008 - 09:55 #10
Jeg har ikke noget der hedder TDataSet umiddelbart, men TDataSource har et DataSet som jeg har fundet en måde at manipulere med. Det holdt lidt hårdt, men det virker nogenlunde.
Nu skal jeg bare have fundet en løsning på at loope alle posterne og finde indholdet af felterne så jeg kan skrive det i en textfil.

(PS: posten har lige været her med en julegave)
Avatar billede hrc Mester
11. november 2008 - 15:04 #11
Du skal ikke bruge TDataSet som sådan. Jeg gætter på din TMyQuery nedarver fra den og så skulle det være nok om du dobbeltklikker på komponenten får at få føromtalte dialog frem.

P.S. Mine julegaver er altid små nyttige stykker software som jeg ikke har købt da jeg ikke har masterkort. Slipper for rødvin jeg alligevel aldrig drikker og fin chokolade (elsker chokolade, men har ikke brug for det...) - så får jeg chokolade så spiser jeg det!
Avatar billede hugopedersen Nybegynder
11. november 2008 - 15:12 #12
Jeg kan ikke få det funktion frem som du refererer til. Men jeg har så fået fat på DataSet på en anden måde via TDataSource som må hente det fra mine Devart komponenter (MySQL)

Jeg sidder og 'kæmper' for at finde en eller anden måde at slå fra så 2009 ikke bare hensynsløst kaster kode ind omkring der hvor cursoren står - det ødelægger en del når man pludselig har en ny proceudre inde i en anden hvor den absolut ikke hører hjemme. Det mener jeg nu ikke min gode gamle 5'er gør.
Avatar billede hugopedersen Nybegynder
11. november 2008 - 15:27 #13
hrc> Hvis du har Devart MySQL DAC, så giv mig lige en PM. Så kan du godt få lov at se min source da det forretningshemmelige funktioner ligger i et eksternt program som mit program kalder.
Er du evt. på Messenger, kan du give mig et kald der oz8hp snabel hotmail punktum com
Avatar billede hrc Mester
12. november 2008 - 17:58 #14
Hugo: Hvis du vil sende mig noget så har du vist allerede min email. Jeg har da i alt fald korresponderet lidt i dag med en der hedder Hugo :-)
Avatar billede hugopedersen Nybegynder
13. november 2008 - 09:38 #15
hrc> jeg får lige et svar for dit input der ledte mig på rette vej.
Avatar billede hrc Mester
13. november 2008 - 10:27 #16
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