10. november 2008 - 11:00Der 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.................
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.
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;
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.
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 :-) ]
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.
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.
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!
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.
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
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.