easyDelphi Q&A
+3 تصويتات
69 مشاهدات

السلام عليكم ورحمة الله تعالى وبركاته

اليكم تعليمة اسكيال للاستعلام عن أسماء الجداول في الاكسس 

المطلوب

تعديل على التعليمة لجلب ايضا عدد السجلات لكل جدول

سُئل في تصنيف SQL بواسطة (730 نقاط) | 69 مشاهدات
 

2 إجابة

+2 تصويتات

بشكل عام اذا لم تستعمل Group By فلا يمكن عمل تعداد او متوسط او مجموع لحقل ما، يعني، علي ان تختار حقل للتجميعه Group و عندها اضف بعد ال Selcect عملية Count(*)

select count(*) , myfield where myid=1
group by myfield

 

تم الرد عليه بواسطة (11,910 نقاط)
شكرا على التوضيح أخي طلبت إضافة التعليمية السابقة لجلب أسماء الجداول في القاعدة وكذلك جلب عدد السجلات لكل جدول
+2 تصويتات
ADOConnection1.GetTableNames(ListBox2.Items, False);

الرابط من هنا .

وحظا طيبا laugh

تم الرد عليه بواسطة (13,990 نقاط)
أخي شكرا لك على الاضافة
هذا الكود لجلب أسماء الجداول في القاعدة
في كود السابق المرفق تعليمةاسكيال  لجلب أسماء الجداول
 أنا أريد جلب عدد السجلات لكل جدول في القاعدة

يمكنك فقط بعد معرفة عدد الجداول .... القيام باللوب "for" مع إستعمال خاصية "ADOQuery1.RecordCount" 

procedure TFrmMain.Btn_GetRecodCountForEachTableClick(Sender: TObject);
var
  I: Integer;
  List: TStringList;
  AdoQuery: TADOQuery;
begin
  List := TStringList.Create;
  AdoQuery := TADOQuery.Create(nil);
  AdoQuery.Connection := ADOCon_MyData;
  ADOCon_MyData.GetTableNames(List, False);
   for I:= 0 to List.Count -1 do
   begin
     with AdoQuery do
     begin
       Close;
       SQL.Clear;
       SQL.Add('select * from ' + List[I]); Open;
      // SQL.Add('do your Needed Query here'); ExecSQL;
       LstBox_TablesNames.Items.Add(List[I] + ' ==> ' + RecordCount.ToString);
     end;
   end;
   List.Free;
   AdoQuery.Free;
end;

 

 

السلام عليكم أخي عند التنفيذ يظهر خطأ هنا
ListBox1.Items.Add(List[I] + ' ==> '  RecordCount.ToString);
لكن عند حذف الكود الخاص بجلب عدد السجلات لكل جدول تظهر أسماء الجداول فقط
ListBox1.Items.Add(List[I] + ' ==> ' );
تم حل المشكلة بتغيير القيمة الرقمية الى قيمة نصية
ListBox1.Items.Add(List[I] + ' ==> '+ IntToStr(RecordCount));

ما هي نسخة الدلفي عندك ؟ إذا ماكانت النسخة أقل من النسخة Xe4 فلابد لك من إستعمال الفانكشن "IntToStr" عوضا عن الهالبر "ToString" 

بمعنى عليك إستبدال الهالبر "ToString" بالفانكشن  "IntToStr" كمايلي :

LstBox_TablesNames.Items.Add(List[I] + ' ==> ' + IntToStr(RecordCount));

الرايط من هنا .

اسئلة متعلقة

+4 تصويتات
2 إجابة
+4 تصويتات
1 إجابة
سُئل سبتمبر 21 في تصنيف SQL Server بواسطة Yamada Fakir (1,330 نقاط) | 102 مشاهدات
+5 تصويتات
2 إجابة
+4 تصويتات
2 إجابة
سُئل أغسطس 11 في تصنيف vcl بواسطة KHALED (6,370 نقاط) | 60 مشاهدات
+3 تصويتات
2 إجابة
سُئل سبتمبر 15 في تصنيف SQL بواسطة Bouh25 (500 نقاط) | 135 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

280 سؤال
486 إجابة
866 تعليق
175 مستخدم