PDA

View Full Version : سوال: عدم نمایش رکورد اینزرت شده در جدول ؟



tik_tak
یک شنبه 07 مهر 1387, 08:46 صبح
سلام
من با این کد اینزرت میکنم :



procedure TForm1.Save;
var
stream:tstream;
begin
with ADOQuery1 do
begin
sql.Text:='select * from picsample';
Open;
end;
stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('pic'),bmRead);
image1.Picture.Graphic.SaveToStream(stream);
With ADOQuery1 do
begin
SQL.Text:='insert into picsample (name,family,pic) VALUES (:p0,:p1,:p2)';
Parameters.ParamByName('p0').Value:=edit1.Text;
Parameters.ParamByName('p1').Value:=edit2.Text;
Parameters.ParamByName('p2').LoadFromStream(stream ,ftBlob);
ExecSQL;
end;
end;



یه دی بی گرید هم گذاشتم که اطلاعات جدول و نشون بده درواقع به دیتا سورس جدولم وصله ،
ولی هر وقت من اینزرت میکنم ، باید یه بار برنامه رو ببندم یعنی از حالت اجرا خارج بشم ،دوباره برنامه رو باز کنم الان وقتی جدول و میبینم ، میبنم که رکوردم اینزرت شد !

چه طور ی میشه اگه بخوام وقتی کلید اینزرت و زدم تو دی بی گرید نشون بده رکورد جدیدمو
مرسی

amin_alexi
یک شنبه 07 مهر 1387, 09:40 صبح
سلام
من خودم معمولا DataSet ي كه به Grid وصله رو دوباره OPEN مي كنم !
شما اگه از AdoQuery يا AdoTable استفاده مي كنيد مي تونيد بعد از Insert يك بار AdoQuery رو Close و دوباره Open كنيد. تا اطلاعات جديد رو از DataBase بخونه

tik_tak
یک شنبه 07 مهر 1387, 10:12 صبح
من دی بی گریدم به دیتاسورس جدول وصله
من این دوتا کد رو وقتی اینزرت پایان گرفت نوشتم..یعنی بعد این :


.
.
.
ExecSQL;
end;


اینو نوشتم:


with ADOQuery1 do
begin
Close;
Open;
end;


یه بارم با این کد امتحان کردم :


with adotable1 do
begin
Close;
Open;
end;


ولی بازم نشون نداد !

amin_alexi
یک شنبه 07 مهر 1387, 10:44 صبح
شايد لازم باشه يك بار هم Connection رو ببندين و دوباره باز كنيد !

yalameh
یک شنبه 07 مهر 1387, 11:32 صبح
بعد از execsql دستور open را اجرا کن . احتمالا حل می شه .

tik_tak
یک شنبه 07 مهر 1387, 14:27 عصر
بعد از execsql دستور open را اجرا کن . احتمالا حل می شه .





.
.
.

ExecSQL;
with adotable1 do
begin
Close;
Open;
end;
end;


متشکرم ..... اینجوری درست شد .