Bearbeiten und Aktualisieren Sie die Werte in dbgrid in delphi

Ich bin neu in delphi und erstelle ich eine Datenbank für Kunden und ich bin in der Lage, füllen Sie Ihre details in einem dbgrid durch Viewcustomers-Taste. Aber ich bin versucht, zu aktualisieren, Ihre details durch: das auswählen einer Zeile und ändern Sie einen Wert in eine Zelle und Aktualisierung derselben durch klicken der Schaltfläche "Bearbeiten".

Ich bin in der Lage, das gleiche zu tun, indem Sie die Zeile markieren und fething die Daten in einer separaten form. Aber ich möchte zu tun, ändern Sie die Werte in dbgrid selbst und aktualisieren. Kann mir da jemand helfen? Aktualisiert mit TDB-navigator und dgEnabled Eigenschaft.

a)MySQL b)TDatasource c) In a form, to update a customer i did like:

procedure TForm5.editCustomersButtonClick(Sender: TObject);
var i:integer;
begin
 for i:=0 to customersDataGrid.Columns.Count-1 do begin
  if customersDataGrid.Fields[i].FieldName='customerId' then 
        if customersDataGrid.Fields[i].FieldName='customerName' then customerNameValue.Text:=customersDataGrid.Fields[i].AsString;
        if customersDataGrid.Fields[i].FieldName='product' then productValue.Text:=customersDataGrid.Fields[i].AsString;
        if customersDataGrid.Fields[i].FieldName='city' then cityValue.Text:=customersDataGrid.Fields[i].AsString;
        if customersDataGrid.Fields[i].FieldName='country' then countryValue.Text:=customersDataGrid.Fields[i].AsString;
          begin
            try
              editCustomerQuery.Close;
              editCustomerQuery.Sql.Clear;
              editCustomerQuery.SQL.Add('UPDATE `employees_details`.`customers` SET `customerId`='''+customerIDValue1.Text+''', `customerName`='''+customerNameValue.Text+''', `product`='''+productValue.Text+''', `city`='''+cityValue.Text+''', `country`='''+countryValue.Text+''' WHERE `customerId`='+FloatToStr(customersDataGrid.Fields[i].AsFloat)+'');
              editCustomerQuery.Open;
              viewCustomerQuery.ApplyUpdates;
              viewCustomerQuery.Refresh;
              except on E : Exception do
            end;
          end;
        end;
        customerIDValue1.Text:='';
        customerNameValue.Text:='';
        productValue.Text:='';
        cityValue.Text:='';
        countryValue.Text:='';
        ShowMessage('Customer Changes have been updated in database');
        customersDataGrid.DataSource.DataSet.Refresh;
    end;

d) Nur die überprüfung der Arbeit der TDBedit in der Datenbank demos, die es funktioniert, aber ich habe ein neues Projekt erstellt mit backend-Datenbank immer noch ist es mir nicht erlaubt, zu Bearbeiten.

a) Welche Datenbank-back-end verwenden Sie? b) Die dataset-Komponenten benutzt du? c) Wie machst du die updates, die Sie sagen, die Arbeit (auf Ihr "getrennte form"), mit db-aware controls oder durch erzeugen einer eigenen Update-Anweisungen in Sql. Bitte fügen Sie den code aus Ihrer eigenen form zu Ihrem q. d) Haben Sie bei uns die Datenbank demos, die mit Delphi 7? Sie alle erlauben das Bearbeiten der Daten.
Sorry, die Antwort zu b) kann nicht sein "TDataSource". Ein TDataSource ist lediglich ein Vermittler zwischen der Komponente, die tatsächlich abgerufen und hält die db-Daten, die eine spezifische Nachkomme von TDataSet, wie TSqlQuery wenn Sie DBExpress, oder TAdoQuery wenn Sie ADO verwenden. Welche Art ist das DataSet verbunden customersDataGrid.DataSource? Es ist wichtig zu wissen, dass ...
Btw, der code, den Sie Hinzugefügt, "wenn customersDataGrid.Felder[i].FieldName='customerId' dann, wenn customersDataGrid.Felder[i].FieldName='customerName'" kann möglicherweise nicht arbeiten, denn wenn die Bedingung in der ersten "wenn ..." ist wahr, d.h., dass das Feld name ist 'customerid', es kann nicht passieren das zweite "wenn .." - test, da die gleiche Feld name nicht 'customerName'.
Was ist das dataset, die Sie verwenden zu bieten, Datensätze zu TDBGrid?

InformationsquelleAutor delsql | 2015-09-21

Schreibe einen Kommentar