Avatar billede bergstein Nybegynder
02. maj 2008 - 15:34 Der er 2 kommentarer og
1 løsning

Quantumgrid, SQL og slette række/record

Hej eksperter.

Jeg er løbet ind i et (måske simpelt) problem, som jeg ikke selv kan løse.

Jeg har investeret i QuantumGrid fra DevExpress, som egentlig er en ret god komponent i forhold til den almindelige DBGrid i VCL.

Jeg har linket til min eksterne database, hvori der bl.a. er en stored procedure til at slette en record. Den skal bruge et enkelt parameter, som er en primær nøgle.

I Delphi har jeg en instans af Quantumgrid'en, databasekomponenter (database, datasource, query og storedproc)

Jeg har sat SQL'en op til, at tabellen bliver vist i grid'en.

Nu kommer kunststykket så.

Jeg har bl.a. en knap, der hedder slet - og som navnet antyder, skal den slette den valgte record i grid'en vha den storede procedure.
Avatar billede martinlind Nybegynder
02. maj 2008 - 20:05 #1
MyStroredProc.ParamByName('KeyField').AsInteger:=MyGrid.Datasource.Dataset.FieldByName('KeyField').AsInteger;
MyStroredProc.ExecProc;

KeyField = Navnet på dit KeyField.
Så er du ikke så langt fra noget der virker, du kan løbe ind i at din grid-SQL skal køres igen for at få refreshet dit view :-)
Avatar billede bergstein Nybegynder
02. maj 2008 - 21:46 #2
@Martin

Dit konkrete eksempel virker nok med den klassiske DBGrid fra VCL, men ikke med QuantumGrid'en fra DevExpress. Du hjalp mig dog på rette vej og fandt med din hjælp løsningen:

Det endte med denne løsning, der virker. Du skal selvfølgelig have point aligevel, da din løsning viste mig vejen til målet. Kan du se optimeringsmuligheder i min kode, må du også gerne nævne det.

procedure TformKlasser.cxButton3Click(Sender: TObject);
begin
  dmData.spKlasse.StoredProcName := 'SPD_KLASSE';
  dmData.spKlasse.Prepare;
  dmData.spKlasse.ParamByName('Klasse').AsString := formKlasser.tableview1.DataController.DataSource.DataSet.FieldByName('Klasse').AsString;
  dmData.spKlasse.ExecProc;

  dmData.qryKlasser.Close;
  dmData.qryKlasser.SQL.Clear;
  dmData.qryKlasser.SQL.Add('SELECT * From Klasser');
  dmData.qryKlasser.Open;
end;
Avatar billede martinlind Nybegynder
03. maj 2008 - 15:35 #3
Det ser fint ud, du kan evt nøjes med at prepare din storedproc EN gang, men hvis det ikke tager lang tid er det lige gyldigt :-)
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

IT-JOB

Akademikernes A-kasse

AI Product Owner

Ringkjøbing Landbobank – Nordjyske Bank

Forretningsudvikler til procesoptimering

Lægemiddelstyrelsen

Løsningsarkitekt

Netcompany A/S

IT Consultant