PDA

View Full Version : خواندن و نوشتن Description هر Table در FireBird



بهروز عباسی
شنبه 30 دی 1391, 20:11 عصر
درود
چطوری باید Description هر Tableرو توی دیتابیس FireBird بخونم و بنویسم؟
(از dbExpress استفاده می کنم)

بهروز عباسی
شنبه 30 دی 1391, 20:17 عصر
مشکل نوشتن رو حل کردم امّا نمیدونم چطوری اون مقدار رو توی برنامه بخونم و نمایشش بدم.

اینم تابعی که برای نوشتن ،نوشتم:
procedure Set_Category_Description(const CategoryName,
CategoryDescription: string);
(*the following is an example how to use the procedure
Set_Category_Description('Students','Information about students') ;*)
begin
try
with SQLQuery do
begin
with SQL do
begin
Close;
Clear;
Add('update rdb$relations set rdb$description = ' +
QuotedStr(CategoryDescription) + ' WHERE rdb$relation_name = ' +
QuotedStr(CategoryName));
ExecSQL;
end;
end;
except
on E: Exception do
begin
MessageBox(0, pchar(E.Message), 'Exception', MB_OK+MB_ICONERROR);
end;
end;
end;

Felony
یک شنبه 01 بهمن 1391, 03:49 صبح
خوب با توجه به اون Query که برای آپدیت زدید ، پس باید بشه با این Query هم واکشیش کرد ، مگه اینطور نیست ؟


'SELECT rdb$description FROM rdb$relations WHERE rdb$relation_name = ?';

بهروز عباسی
یک شنبه 01 بهمن 1391, 13:25 عصر
خوب با توجه به اون Query که برای آپدیت زدید ، پس باید بشه با این Query هم واکشیش کرد ، مگه اینطور نیست ؟


'SELECT rdb$description FROM rdb$relations WHERE rdb$relation_name = ?';
ممونو از کمکت
اما این Queryاجرا نمیشه و خطا میگیره

unknow ISC error 0
حالا اگرهم اجرا بشه چطوری نتیجش رو بریزم توی یک متغییر؟

Felony
پنج شنبه 05 بهمن 1391, 12:44 عصر
در مورد مشکل : https://www.google.com/search?q=unknow+ISC+error+0+in+firebird&oq=unknow+ISC+error+0+in+firebird&sourceid=chrome&ie=UTF-8#hl=en&tbo=d&spell=1&q=unknown+ISC+error+0+in+firebird&sa=X&ei=lQIBUaqGJ43RsgbZn4Fo&ved=0CDIQvwUoAA&bav=on.2,or.r_gc.r_pw.r_qf.&bvm=bv.41524429,d.Yms&fp=99bbb1d5e9938d35&biw=1600&bih=775

در مورد نحوه ریختن تو متغییر اول باید ببینی خروجی اسکریپت فوق چی هست و چه ستون هایی برگشت میده و بعد تو یک حلقه اون ها رو توسط اسم فیلدشون یا شماره ستونشون واکشی کنید و در متغییر مورد نظر بریزید .

BORHAN TEC
دوشنبه 09 بهمن 1391, 19:01 عصر
سلام
برای خواندن Description مربوط به یک جدول می توانید از کد زیر استفاده کنید:
Function TForm1.Get_Relation_Description(const CategoryName: string;
Description_Max_Len: Cardinal ): string;
begin
try
with SQLQuery do
begin
with SQL do
begin
Close;
Clear;
Add('select cast(rdb$relation_name as varchar(31))AS A, cast(rdb$description as varchar('
+ IntToStr(Description_Max_Len) + ')) AS B');
Add('from rdb$relations');

Open;

while not EOF do
begin
if Trim(FieldByName('A').AsString) = Trim(CategoryName) then
begin
Result := FieldByName('B').AsString;
Break;
end;
next;
end;

end;
end;
except
on E: Exception do
begin
MessageBox(0, pchar(E.Message), 'Exception', MB_OK + MB_ICONERROR);
end;
end;
end;
نحوه استفاده:
Caption := Get_Relation_Description(Edit1.Text, 10000);
در ضمن من این کد را در مورد Firebird 2.5 تست کردم ولی بعید می دانم که در نسخه 2.1 مشکلی پیش بیاید.

ختم این پرونده! :چشمک:

موفق باشید...