ورود

View Full Version : مشکل در کوری



amin_ghn
پنج شنبه 19 اسفند 1389, 17:03 عصر
سلام
یه کوری زدم باره اول درست انجام میشه ولی وقتی در همون فرم کوری داخل جدول insert میکنم باید چند بار کوری رو که در یه battun نوشتم رو اجرا کنم(باتتون رو کلیک کنم) تا کوری باز اون رکورد تازه ثبت شده رو نشون بده
چه کار کنم تا همونجا که insert میکنم در کوری هم نشون بده؟
از دلفی 2010 و access 2007 استفاده میکنم
کوری هم داخل dbgride نشون میده
مرسی از پاسختون

hossein_h62
پنج شنبه 19 اسفند 1389, 18:13 عصر
سلام

چه کار کنم تا همونجا که insert میکنم در کوری هم نشون بده؟
در کوئری نشون بده یعنی چی ؟
! سوالتون مفهوم نیست. لطفا کدی که نوشتید رو بزارید و توضیح مفهوم تری بدین.

pezhvakco
پنج شنبه 19 اسفند 1389, 19:25 عصر
وقتی در همون فرم کوری داخل جدول insert میکنم باید چند بار کوری رو که در یه battun نوشتم رو اجرا کنم(باتتون رو کلیک کنم) تا کوری باز اون رکورد تازه ثبت شده رو نشون بده
چند بار نباید باشه، احتمالا باید یک بار دیگه فراخوانی بشه کوئری شما که این هم طبیعی است چون کوئری داده های زمانی رو تو حافظه داره که هنوز تغییرات انجام نشده و داده های بعد از اون رو نداره .

amin_ghn
جمعه 20 اسفند 1389, 00:43 صبح
adotable1.Insert;
adotable1['idbakhsh']:=strtoint(form4.DBText1.Caption);
adotable1['nbakhsh']:=edit2.Text;
adotable1.Post;
adotable2.Edit;
adotable2['idbakhsh']:=strtoint(form4.DBText1.Caption)+1;
adotable2.Post;
form4.Edit2.Clear;
edit2.SetFocus;

end;

procedure TForm4.Button2Click(Sender: TObject);
var
a,b,c:string;
begin
adotable3.Insert;
adotable3['idbakhsh']:=strtoint(form4.DBText3.Caption);
adotable3['idservice']:=strtoint(form4.DBText2.Caption);
adotable3['nservice']:=form4.Edit1.Text;
adotable3['pservice']:=strtoint(form4.Edit3.Text);
adotable3.Post;
adotable2.Edit;
adotable2['idservice']:=strtoint(form4.DBText2.Caption)+1;
adotable2.Post;
form4.ADOTable3.First;
form4.ADOTable3.Last;
//////////////////////////////////
form4.ADOQuery1.Active:=false;
form4.ADOQuery1.SQL.Clear;
form4.ADOQuery1.SQL.Add('SELECT srvice.idservice FROM srvice ORDER BY srvice.idservice');
form4.ADOQuery1.Active:=true;

a:='SELECT srvice.IDbakhsh, srvice.nservice, srvice.pservice FROM srvice WHERE (((srvice.IDbakhsh)=';
b:='))';
c:=a+form4.DBText3.Caption+b;
form4.ADOQuery1.Active:=false;
form4.ADOQuery1.SQL.Clear;
form4.ADOQuery1.SQL.Add(c);
form4.ADOQuery1.Active:=true;

form4.DBGrid2.DataSource.Edit;
///
edit1.Clear;
edit3.Clear;
edit1.SetFocus;
end;

procedure TForm4.Button3Click(Sender: TObject);
begin
adotable4.Insert;
adotable4['idghete']:=strtoint(form4.DBText5.Caption);
adotable4['nghete']:=edit5.Text;
adotable4['pghete']:=strtoint(form4.Edit4.Text);
adotable4.Post;
adotable2.Edit;
adotable2['idghete']:=strtoint(form4.DBText5.Caption)+1;
adotable2.Post;
form4.Edit4.Clear;
edit4.SetFocus;
end;

procedure TForm4.DBGrid1DblClick(Sender: TObject);
var
a,b,c:string;
begin
a:='SELECT srvice.IDbakhsh, srvice.nservice, srvice.pservice FROM srvice WHERE (((srvice.IDbakhsh)=';
b:='))';
c:=a+form4.DBText3.Caption+b;
form4.ADOQuery1.Active:=false;
form4.ADOQuery1.SQL.Clear;
form4.ADOQuery1.SQL.Add(c);
form4.ADOQuery1.Active:=true;
edit1.Clear;
edit3.Clear;
edit1.SetFocus;

end;

procedure TForm4.FormCreate(Sender: TObject);
begin

end;

end.

amin_ghn
جمعه 20 اسفند 1389, 00:46 صبح
چند بار نباید باشه، احتمالا باید یک بار دیگه فراخوانی بشه کوئری شما که این هم طبیعی است چون کوئری داده های زمانی رو تو حافظه داره که هنوز تغییرات انجام نشده و داده های بعد از اون رو نداره .
خوب نمیخوام اینطور شه چه کار کنم؟
میخوام وارد کردم رکوردو در جدول کوری هم بیاد همونجا درست مثل وارد کردن رکورد که در جدول میاد

pezhvakco
جمعه 20 اسفند 1389, 11:06 صبح
میخوام وارد کردم رکوردو در جدول کوری هم بیاد همونجا درست مثل وارد کردن رکورد که در جدول میاد
اون کد هایی که گذاشتین رو نخوندم چون بهتره کد ها تون رو تگ (Tag) مخصوص برای کد ها ( گزینه PAS ) بنویسین تا راحت خوانده بشه .

ساختار کار کوئری اینه که در زمان فراخوانی داده های مورد نیاز رو در حافظه میاره و ارتباطش با جدول اصلی قطع میشه . برای داشتن آخرین ویرایش های جدول باید کوئری دوباره فراخوانی بشه .

تا جایی که فهمیدم برای خواصته شما میشه جدول رو فیلتر کرد (متناسب با شرط مورد نظر) . خوبی این روش اینه اگه یک ردیف جدول اضاف یا کم بشه باز هم فیلتر کار می کنه و نیازی به دوباره کاری نیست .