So, wie angekündigt habe ich getestet (mit überraschendem Ergebnis):
Die Unmöglichkeit, einen Datensatz zuzufügen, ist unabhängig von der Laufzeit des Programmes! Nur unter Vista! Heute konnte ich gleich nach dem Programmstart keinen DS zufügen, nach Neustart ohne Probleme beliebig viele! Hier die (einzige) Stelle, an der zugefügt wird:
Delphi-Quellcode:
procedure TObjektBrowser.BtnObjNeuClick(Sender: TObject);
var ok1,ok2 : boolean;
nNR :
string;
begin
with DM
do //Unit des Datenmodules
begin
Filter_off;
//Dataset-Filter ausschalten
ok1:=false;ok2:=false;
nNR:=NextNumber;
//Objektnummer nach Jahr sortiert wird erzeugt
DSObj.Append;
//DS zufügen
DSObjDatum.AsDateTime:=date;
//erste Angaben in den Satz
DSObjObjNr.AsString:=nNR;
DSAdr.First;
//Adresse zum Objekt zuordnen
if AdrWahl.ShowModal=mrOk
then
begin
DSObjAdr.AsInteger:=DSAdrIdAdresse.AsInteger;
//hier Adressen aussuchen und zuordnen
DSAdr.Filtered:=false;
ok1:=true
end;
DSKund.First;
//ein Kunde zum Objekt zuordnen
if ok1
and (KundWahl.ShowModal=mrOk)
then
begin
DSObjVerk.AsInteger:=DSKundidKunde.AsInteger;
DSKund.Filtered:=false;
ok2:=true
end;
if ok1
and ok2
then
begin
DSNr.Edit;DSNrNR.AsString:=nNR;DSNr.Post;
//jetzt Nummer festschreiben
Verzeichnis_anlegen(defObjDir+'
\'+nNr+'
\Fotos');
DSObj.Post;
Main.SendRefresh;
//anderen Rechnern die Veränderung in der DB über UTP anzeigen
end else DSObj.Cancel;
UpdateObjektDaten;
//hier werden Verzeichnisse eingestellt, Daten gelesen usw.
DSObj.Last
//zum weiteren Editieren wird der neue Satz aktuell gemacht
end;
end;
Ich hoffe, dass der Sinn deutlich wird. Wie gesagt unter XP keine Probleme (gleiche
DB). Oder nein, unter VISTA wird MS-
SQL 2005 SP2 verwendet, unter XP ohne Servicepack).
Wisst Ihr noch, wo der Fehler stecken könnte?
Bernd.