delphi4arab منتديات دلفي للعرب
ملئ الفراغ عند حذف سجل في جدول paradox - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : ملئ الفراغ عند حذف سجل في جدول paradox (/showthread.php?tid=3731)



ملئ الفراغ عند حذف سجل في جدول paradox - MOUMEN78 - 27-12-2011

عند استعمال Auto increment في جدول paradox يقوم بترتيب البيانات تلقائيا
لكن عند حذف أحد هذه البيانات يبقى الرقم فارغ
مثلا عندنا التسجيلة 1
// 2
// 3
// 4
عند حذف التسجيلة 3 تبقى فارغة
هل من طريقة لجعل البرنامج يملاء هذه الفراغات


ملئ الفراغ عند حذف سجل في جدول paradox - kachwahed - 27-12-2011

السلام عليكم
الخدعة باللعب على ملف قاعدة البيانات، وإعادة تهيئة قيمة بداخله:
PHP كود :
function ResetAutoInc(FileName: TFileName; NewValue:Longint): Boolean;
begin
  with TFileStream
.Create(FileName, fmOpenReadWrite) do
  try
    
Result := (Seek($49, soFromBeginning) = $49) and (Write(NewValue, 4) = 4);
  finally
    
Free;
  
end;
end; 
فرنسي:
PHP كود :
(*Si tu implementes la procedure setAutoInc(sFilename : string; 
iValeur:Longint) alors cette procedure permet d'effacer la 
valeur iValeur à l'
auto-increment de la table paradox sFilename. 
Attention il faut donner le chemin complet du fichier *.db 
correspondant à ta table paradox
.

Par exemple, pour re-initialiser l'auto-increment de la table C:\Database\MaTable.DB :

setAutoInc('
C:\Database\MaTable.DB',0)*)

unit UbsDBUtils;
 
interface
uses
  classes,
  Sysutils;
 
procedure setAutoInc(sFilename : string; iValeur:Longint);
function GetAutoInc(sFilename : string): Longint;
 
implementation
 
function GetAutoInc(sFilename : string): Longint;
var
   myStream : tFileStream;
begin
   result := -1;
   myStream := tFileStream.create(sFileName, fmOpenRead + fmShareExclusive);
   myStream.Seek(73, soFromBeginning);
   //myStream.WriteBuffer(iValeur, 4);
   myStream.ReadBuffer(result,4);
   myStream.Free;
end;
 
procedure setAutoInc(sFilename : string; iValeur:Longint);
var
   myStream : tFileStream;
begin
   myStream := tFileStream.create(sFileName, fmOpenWrite + fmShareExclusive);
   myStream.Seek(73, soFromBeginning);
   myStream.WriteBuffer(iValeur, 4);
   myStream.Free;
end; 
لم أجرب أيا من ذلك، ولا أنصحك بهذه الطرق...
بالتوفيق.