Hallo,
das Problem, das ich habe hat eigentlich im Quickreport-Forum begonnen (Erstellen einer Monats-Stundenliste), aber da es sich dann auf ADO ausgeweitet hat hoffe ich, dass mir hier eher jemand helfen kann.
Also ich möchte eine Monats-Stundenliste ausgeben, welche die Projektstunden, die jeder einzlne Mitarbeiter an einem Tag geleistet hat aufführt. Zu diesem Zweck hab ich eine Tabelle mit den Tagen 1-31, datum Mitarbeiterid und der Projektid angelegt. Im Programm hab ich eine Routine eingebaut, welche für jedes Datum die gewünschten Angaben in die Tabelle einfügt. Den Insert-Code will ich in einem ADOCommand aufrufen. So weit so gut.
Hier die Procedure:
procedure Tweekcalform.Monthlist (Sender: TObject);
var
month,
month2,
year,
day : word;
Date : TDate;
Stunden : String;
i: integer;
begin
day := 1;
year := yearof(MonthCalendar1.Date);
month := monthOf(MonthCalendar1.Date);
Date := encodeDate(year, month, day);
i := 1;
Stunden := 'Std' + IntToStr(i);
repeat
DataModule1.ADOConnection1.BeginTrans;
DataModuleWeeklist.ADOCommand1.CommandText := 'INSERT INTO Monthlist ' + ' (ID, Projektid, Datum, ''' + Stunden + '''' + ' )' + ' SELECT id, projektid, datum, sum(stunden) FROM Mitarbeing' + ' WHERE Mitarbeing.datum = ''' + DateToStr(Date) + '''' + ' group by datum, id, Projektid';
try
DataModuleWeeklist.ADOCommand1.Execute;
DataModule1.ADOConnection1.CommitTrans;
except
DataModule1.ADOConnection1.RollbackTrans;
end;
i := i + 1;
Stunden := 'Std' + IntToStr(i);
Date := Date + 1;
Month2 := monthOf(Date);
until month2 = month + 1;
end;
Nun erhalte ich aber zur Laufzeit immer die Meldung "Table unknown Monthlist", obwohl die Tabelle auf der Datenbank vorhanden ist und der gleiche SQL-Code in der IBConsole auch ausgeführt wird. Die Tabelle lässt sich auch mit einer ADODataSet-Komponente verknüpfen und wird in der Liste von CommandText angezeigt.
Also kein Fehler in der ADOConnection.
Außerdem wird der SQL-Code, wenn ich ihn unter CommandText ohne Variable eingebe auch ausgeführt. -> Auch kein Fehler im SQL-Code
Nur eben nicht zur Laufzeit.
Desweitern wird die gleiche SQL-Anweisung, wenn ich eine andere Tabelle einfüge auch zur Laufzeit ausgeführt.
-> Also irgend etwas stimmt mit der Tabelle nicht. Nur was ???
Die Rechte sind übrigens für jeden User vorhanden.
Ich weiß nicht, was ich noch alles versuchen soll, also bitte helft mir schnell, bevor ich ganz verzweifle.
Gruß Elke
das Problem, das ich habe hat eigentlich im Quickreport-Forum begonnen (Erstellen einer Monats-Stundenliste), aber da es sich dann auf ADO ausgeweitet hat hoffe ich, dass mir hier eher jemand helfen kann.
Also ich möchte eine Monats-Stundenliste ausgeben, welche die Projektstunden, die jeder einzlne Mitarbeiter an einem Tag geleistet hat aufführt. Zu diesem Zweck hab ich eine Tabelle mit den Tagen 1-31, datum Mitarbeiterid und der Projektid angelegt. Im Programm hab ich eine Routine eingebaut, welche für jedes Datum die gewünschten Angaben in die Tabelle einfügt. Den Insert-Code will ich in einem ADOCommand aufrufen. So weit so gut.
Hier die Procedure:
procedure Tweekcalform.Monthlist (Sender: TObject);
var
month,
month2,
year,
day : word;
Date : TDate;
Stunden : String;
i: integer;
begin
day := 1;
year := yearof(MonthCalendar1.Date);
month := monthOf(MonthCalendar1.Date);
Date := encodeDate(year, month, day);
i := 1;
Stunden := 'Std' + IntToStr(i);
repeat
DataModule1.ADOConnection1.BeginTrans;
DataModuleWeeklist.ADOCommand1.CommandText := 'INSERT INTO Monthlist ' + ' (ID, Projektid, Datum, ''' + Stunden + '''' + ' )' + ' SELECT id, projektid, datum, sum(stunden) FROM Mitarbeing' + ' WHERE Mitarbeing.datum = ''' + DateToStr(Date) + '''' + ' group by datum, id, Projektid';
try
DataModuleWeeklist.ADOCommand1.Execute;
DataModule1.ADOConnection1.CommitTrans;
except
DataModule1.ADOConnection1.RollbackTrans;
end;
i := i + 1;
Stunden := 'Std' + IntToStr(i);
Date := Date + 1;
Month2 := monthOf(Date);
until month2 = month + 1;
end;
Nun erhalte ich aber zur Laufzeit immer die Meldung "Table unknown Monthlist", obwohl die Tabelle auf der Datenbank vorhanden ist und der gleiche SQL-Code in der IBConsole auch ausgeführt wird. Die Tabelle lässt sich auch mit einer ADODataSet-Komponente verknüpfen und wird in der Liste von CommandText angezeigt.
Also kein Fehler in der ADOConnection.
Außerdem wird der SQL-Code, wenn ich ihn unter CommandText ohne Variable eingebe auch ausgeführt. -> Auch kein Fehler im SQL-Code
Nur eben nicht zur Laufzeit.
Desweitern wird die gleiche SQL-Anweisung, wenn ich eine andere Tabelle einfüge auch zur Laufzeit ausgeführt.
-> Also irgend etwas stimmt mit der Tabelle nicht. Nur was ???
Die Rechte sind übrigens für jeden User vorhanden.
Ich weiß nicht, was ich noch alles versuchen soll, also bitte helft mir schnell, bevor ich ganz verzweifle.
Gruß Elke
Comment