[gelöst] Zugriff auf Firebird DaBa nur ReadOnly - warum?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

[gelöst] Zugriff auf Firebird DaBa nur ReadOnly - warum?

Beitragvon kralle » 21. Jul 2017, 08:05 [gelöst] Zugriff auf Firebird DaBa nur ReadOnly - warum?

Moin,

meine Anwendung verbindet sich mit der Datenbank mit folgendem Code:
Code: Alles auswählen
 
procedure TForm1.Btn_VerbindenClick(Sender: TObject);
begin
  try
    Statusbar1.SimpleText:='Verbindung zur Datenbank wird aufgebaut...';
    SQLQuery1.Close;
    // Verbindungseinstellungen für die Firebird-Datenbank
    // Werden nur gebraucht wenn noch keine Verbindung besteht
    if not IBConnection1.Connected then
      begin
        IBConnection1.HostName := 'localhost';
        IBConnection1.DatabaseName := 'employee';
        IBConnection1.Username := 'SYSDBA';
        IBConnection1.Password := 'Key4DaBa';
        SQLQuery1.SQL.Text:= 'select * from employee';
        IBConnection1.Connected:= True;
        SQLTransaction1.Active:= True;
        SQLQuery1.Open;
        {
        Um zu verhindern, dass in das Indexfeld 'CUST_NO' falsche Werte eingegeben werden,
        teilen wir Lazarus mit, das wir keine Eingaben in diesem Feld erwarten und
        }

        SQLQuery1.FieldByName('EMP_NO').Required:=false;
        {
        um dem Anwender nicht doch die Möglichkeit zu geben Werte in das
        Indexfeld 'CUST_NO' einzugeben, blenden wir die Spalte im DBGrid komplett aus.
        }

        DBGrid1.Columns[0].Visible:=false;
        //
        Statusbar1.SimpleText:='Verbindung zur Datenbank wurde aufgebaut.';
      end
    else
      Statusbar1.SimpleText:='Verbindung zur Datenbank ist bereits vorhanden.';
  except
    //We could use EDatabaseError which is a general database error, but we're dealing with Firebird/Interbase, so:
    on E: EDatabaseError do
      begin
        MessageDlg('Fehler','Der Verbindungsauf zur Datenbank ist fehlgeschlagen Details: ' + E.Message,mtError,[mbOK],0);
      end;
  end;
end;
 
 
Die Daten werden auch im
Code: Alles auswählen
DBGrid
angezeigt und ich kann dort auch Daten verändern.
Aber, wenn ich die Änderungen übernehmen will bekomme ich eine Fehlermeldung das die Daten schreibgeschützt sein.
Wenn ich mittels "FlameRobin" auf die Tabelle zugreife, kann ich problemlos die Daten bearbeiten.
 
Hier mein Code fürs Speichern:
Code: Alles auswählen
 
procedure TForm1.SaveChanges;
// Saves edits done by user, if any.
   begin
     If SQLQuery1.State in [dsEdit, dsInsert] then
        begin
          try
             if SQLTransaction1.Active then
             // Only if we are within a started transaction;
             // otherwise you get "Operation cannot be performed on an inactive dataset"
                begin
                     SQLQuery1.ApplyUpdates; //Pass user-generated changes back to database...
                     SQLTransaction1.Commit; //... and commit them using the transaction.
                     //SQLTransaction1.Active now is false
                     Statusbar1.SimpleText:='Die Änderungen wurden übernommen.';
                end;
          except
            on E: EDatabaseError do
              begin
                MessageDlg('Fehler', 'Das Speichern der Änderungen hat nicht funktioniert. Details: ' +
                E.Message, mtError, [mbOK], 0);
              end;
          end;
        end;
   end;     
 


Die Informationen habe ich von verschiedenen Internetseiten.
Ich finde einfach nicht heraus, warum die Daten schreibgeschütz sind.
Wer kann helfen?

Gruß Heiko
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von kralle am 21. Jul 2017, 13:06, insgesamt 1-mal geändert.
Linux Mint 18.2 und Lazarus 1.9 (FPC-Version: 3.0.2)
Windows 8.1 Pro Lazarus 1.6 + Delphi XE7SP1
kralle
 
Beiträge: 483
Registriert: 17. Mär 2010, 14:50
Wohnort: Bremerhaven
OS, Lazarus, FPC: Linux Mint 18.2 - Lazarus 1.9 - FPC 3.0.2 -Win8.1 & XE7Pro | 
CPU-Target: 64Bit
Nach oben

Beitragvon mse » 21. Jul 2017, 08:30 Re: Zugriff auf Firebird DaBa nur ReadOnly - warum?

kralle hat geschrieben:
Code: Alles auswählen
 
        SQLQuery1.SQL.Text:= 'select * from employee';
 


Hier bekommst du auch das "FULL_NAME"-Feld, nicht? "FULL_NAME" ist ein Funktions-Feld welches nicht beschrieben werden kann.
employee.png

Die Daten werden auch im
Code: Alles auswählen
DBGrid
angezeigt und ich kann dort auch Daten verändern.
Aber, wenn ich die Änderungen übernehmen will bekomme ich eine Fehlermeldung das die Daten schreibgeschützt sein.

In MSEgui würde man of_ininsert und of_inupdate der optionsfield property des "FULL_NAME"-Feldes deaktivieren, wie man das mit Lazarus macht weiss ich nicht.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
mse
 
Beiträge: 1792
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.2,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon kralle » 21. Jul 2017, 13:05 Re: Zugriff auf Firebird DaBa nur ReadOnly - warum?

Moin,

mse hat geschrieben:
kralle hat geschrieben:
Code: Alles auswählen
 
        SQLQuery1.SQL.Text:= 'select * from employee';
 


Hier bekommst du auch das "FULL_NAME"-Feld, nicht? "FULL_NAME" ist ein Funktions-Feld welches nicht beschrieben werden kann.


Genau hier lag die Lösung.
Code: Alles auswählen
SQLQuery1.SQL.Text:= 'select EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, HIRE_DATE, DEPT_NO, JOB_CODE, JOB_GRADE, JOB_COUNTRY, SALARY from employee';

Ich muß nicht ALLE Felder abrufen, sondern nur die die beschreibbar sind und schon klappt das mit dem Ändern und sichern.

Die restlichen Sachen, werde ich dann auch noch hinbekommen.
Danke, für die Hilfe.

Gruß Heiko
Linux Mint 18.2 und Lazarus 1.9 (FPC-Version: 3.0.2)
Windows 8.1 Pro Lazarus 1.6 + Delphi XE7SP1
kralle
 
Beiträge: 483
Registriert: 17. Mär 2010, 14:50
Wohnort: Bremerhaven
OS, Lazarus, FPC: Linux Mint 18.2 - Lazarus 1.9 - FPC 3.0.2 -Win8.1 & XE7Pro | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried