-
با سلام خدمت مرد مباح عزیز . استاد بی ادعای دلفی.
جناب مباح من یک برنامه نوشتم که چند جدول رابطه ای داره. بعد از انتخاب سال ماههای اون سال میان و بعد از انتخاب ماه ، روزها میان و با انتخاب هر روز میتونی اطلاعات مورد نیاز رو ثبت کنی.
من از دیتابیس اکسس استفاده کردم و جداولم هم ADO Table هستن.
میخوام ببینم اطلاعات جدول آخر که مربوط به ثبت برنامه های روزانه هستش رو چطوری میتونم بر اساس فیلدهایی که میخوام صعودی یا نزولی مرتب کنم؟
مثلا فرض کنید مشتری برای انجام خدماتی از ما نوبت میگیره برای ساعت 12 و مشتری بعدی برای ساعت 9 حالا من میخوام خود این مشتریها بر اساس ساعت مرتب بشن . خیلی خلیی ممنون از لطفت.
-
یه جمع ما خوش آمدید و امیدوارم که این اولین و آخرین سوال و یا جواب شما نباشه.
دوست عزیز.
من استاد دلفس نیستم و هر چی بیشتر بدونی میفهمی که کمتر بلدی و من هم جزئی از این قاعده هستم. شاید چون خیلی وقته که با دلفی کار میکنم مشکلاتی که شما الان بهش یرخورد کردی من قبلا برخورد کرده باششم و بتونم یک چیزایی از اون براتون بگم. همین.
جواب :
نمیدونم چطوری Tableهاتون رو تعریف کردی ولی فکر کنم توی ایجاد اونا هم مشکل وجود داره. برای این کاری که شما میخواین بکنین نهایتا 2 تا Table لازم میشه و حتی میتونی توی یکی هم جمع کنیش. مشکل شما اینه که چندتا تیبل رو با هم استفاده کردی و یک کمی گیج کننده شده.
اگه با همین تعداد میخوای ادامه بدی باید از فرامین SQL استفاده کنی و یا اینکه به کمک خود Access یک Query بسازی که اطلاعات مورد نظرت رو از همه تیبلها جمع کنه و بعد Sort کنیش.
موفق باشی.
-
سلام
چند سوال داشتم.
1- دستورات ایندکس گذاری در اکسس و استفاده اون در دلفی رو کسی اگه بلده توضیح بده لطفا.
2- روش فیلتر گذاری در استفاده از ado در واکسس رو لطفا توضیح بدید.
البته من در db (database desktop)همشو انجام دادم ولی حالا که میخوام از اکسس به عنوان دیتابیس استفاده کنم نمیشه. لطفا توضیح بدید برام.
مرسی
-
اگه میخوای توی اکسس سورت کنی که بحث فرق داره. ولی اگه منظورت اینه که بانکت اکسس هستش دو تا راه حل داری :
1. استفاده از فرامین SQL که توی تا÷یک دیگه ای مفصل توضیح داده شده. (با تشکر از فرهاد عزیز)
2. استفاده از خود ADODataset که به کمک بخش Filter و IndexFieldName انجام میشه.
در مورد فیلتر توی لینکهای امضام قبلا توضیح دادم. برای سورت کردن هم اسم فیلدهای مورد نظرت رو توش بنویسی
برای مثال : Name,Family
-
ممنونم مرد مباح.
مگه دستورات sql هم برای بانکهای اکسس کار میکنند؟ در ضمن ایندکس رو چیکار کنم؟
من یک بانک دارم که چند هزار عدد(رکورد و ویژگیهاشون که همه عدد هستند) دارم که برای هر محاسبه نیار به فقط یه گروه خاص دارم که باید یا از طریق ایندکس گذاری اونا رو جدا کنم یا از طریق فیلتر. البته عدد ثابتی نیست که توی برنامه ام بتویسمش بلکه توسط کاربر تغییر میکنه.
در database desktop از ایندکس استفاده میکردم و بعد محاسبتم رو با اون رکوردهای جدا شده انجام میدادم و بعد دوباره ایندکس رو تغییر میدادم بعد محاسیات بعدی....
حالا میخوام از اکسس به عتوان دیتابیسم استفاده کنم....
-
ایندکس گداری میشه سورت کردن (ترتیب دادن).
اون کاری که شما میخواین بکنین Filter کردنه. ضمنا با چی به اکسس لینک میشین؟
اگر با ADODataset ویا ADOQuery به اکسس کانکت بشی میتونی از فرامین SQL یرای انتخاب جداولت استفاده کنی.
موفق باشی.
-
من از ADODataset استفاده کردم. ولی نتونستم از فیلتر استفاده کنم. میشه لطف کنید و یک نمونه ساده از دستورات فیلتر که از کاربر مورد فیلتر رو بگیره و نیز سرچ توی مقادیر فیلتر شده رو برام بذارید . ممنونم
-
اوایل همین تاپیک و در لینک امضای من این چیزا با نمونه اومده. ولی حتما دقت کنید که خاصیت Filtered = true یاشه.
-
مشکل در برنامه
با سلام
من تمام بحث ها رو خوندم اما نتونستم مشکلم رو حل کنم
متن برنامم اینجوریه ایراداز کجاست که ارور میده
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls, DB, DBTables, Grids, DBGrids;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
Table1: TTable;
Table1Studentnumber: TStringField;
Table1Fristname: TStringField;
Table1Lastname: TStringField;
Table1Averag: TFloatField;
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Label5: TLabel;
Edit2: TEdit;
Label6: TLabel;
DataSource2: TDataSource;
Table2: TTable;
Table2Stunum: TStringField;
Table2Nam: TStringField;
Table2Famil: TStringField;
Table2Moadel: TFloatField;
DBGrid1: TDBGrid;
Label7: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure ValueListEditor1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
table1.Open;
table1.edit;
table1.append;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
table1.Open;
table1.edit;
table1.post;
table1.close;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
table1.Open;
table1.edit;
table1.First;
While not eof(table1) do
Begin
if table1.FieldByName('averag').value =>15 then
begin
table2.Open;
table2.edit;
table2.append;
table2.Post;
table2.Close;
table1.Close;
end;
end.
لطفا ایرادام رو یکی بگیره
-
مشکلم توی
While not eof(table1) do
Begin
if table1.FieldByName('averag').value =>15 then
begin
table2.Open;
table2.edit;
table2.append;
table2.Post;
table2.Close;
table1.Close;
هست