بهروز عباسی
یک شنبه 01 بهمن 1391, 01:28 صبح
درود
من تویه یک برنامه دیتابیسی باید تعدادی فایل رو توی دیتابیس ذخیره کنم و من این کارو با دستورات SQL انجام میدم.
همونطور که همه میدونید برای استفاده از دستور INSERT INTO بعد از ذکر نام Table و Columnها
باید مقادیر رو توی کتیشن (')قرار بدیم ، خوب اینکارو با تابع QuotedStr انجام میدیم.
من یک رکورد دارم به شرح زیر که توسط اون مقادیر رو به تابع ثبت رکورد ارسال میکنم (اون تابع درست کار میکنه)
type
TFiles = record
File_Name: string;
File_Description: string;
File_Size: string;
File_Date_Time: string;
File_Data:string;
end;
این هم دستوری که Field های Recoed بالا رو مقدار دهی میکنه (از خونه های ListView)
with Files do
begin
File_Name := lsv_Files.Items.Item[0].Caption;
File_Size := lsv_Files.Items.Item[ItemIndex].SubItems[0];
File_Date_Time := lsv_Files.Items.Item[ItemIndex].SubItems[1];
File_Description := lsv_Files.Items.Item[ItemIndex].SubItems[2];
File_Data := 'File Data';
end;
اینم مشکلی نداره.
چون وقتی به این شکل ازشون استفاده میکنم همه مقادیر درستن :
with Memo1.Lines do
begin
with Files do
begin
Add(File_Name);
Add(File_Size);
Add(File_Date_Time);
Add(File_Description);
Add(File_Data);
end;
end;
اما به این صورت می خوام مقادیر رو بخونم به مشکل بر میخورم :
(* Var
Value: String;
const
LF = #10;
CR = #13;
CRLF = CR + LF;*)
with Files do
begin
Value :=QuotedStr(File_Name) + ',' + CRLF +
QuotedStr(File_Size) + ',' + CRLF+
QuotedStr(File_Description) + ',' + CRLF +
QuotedStr(File_Date_Time)+ ',' + CRLF +
QuotedStr(File_Data);
MessageBox(0, pchar(Value), '', MB_OK + MB_ICONINFORMATION);
end;
(به اون CRLF توجه نکنید برای خوانی متن MessageBox گذاشتم اگه نباشه هم فرقی نداره )
شما میتونید توی عکس زیر نتیجه رو ببینید که توی MessageBox فقط دوتا مقدار رو نشون میده.
اما متن داخل Memo درسته
98707
من تویه یک برنامه دیتابیسی باید تعدادی فایل رو توی دیتابیس ذخیره کنم و من این کارو با دستورات SQL انجام میدم.
همونطور که همه میدونید برای استفاده از دستور INSERT INTO بعد از ذکر نام Table و Columnها
باید مقادیر رو توی کتیشن (')قرار بدیم ، خوب اینکارو با تابع QuotedStr انجام میدیم.
من یک رکورد دارم به شرح زیر که توسط اون مقادیر رو به تابع ثبت رکورد ارسال میکنم (اون تابع درست کار میکنه)
type
TFiles = record
File_Name: string;
File_Description: string;
File_Size: string;
File_Date_Time: string;
File_Data:string;
end;
این هم دستوری که Field های Recoed بالا رو مقدار دهی میکنه (از خونه های ListView)
with Files do
begin
File_Name := lsv_Files.Items.Item[0].Caption;
File_Size := lsv_Files.Items.Item[ItemIndex].SubItems[0];
File_Date_Time := lsv_Files.Items.Item[ItemIndex].SubItems[1];
File_Description := lsv_Files.Items.Item[ItemIndex].SubItems[2];
File_Data := 'File Data';
end;
اینم مشکلی نداره.
چون وقتی به این شکل ازشون استفاده میکنم همه مقادیر درستن :
with Memo1.Lines do
begin
with Files do
begin
Add(File_Name);
Add(File_Size);
Add(File_Date_Time);
Add(File_Description);
Add(File_Data);
end;
end;
اما به این صورت می خوام مقادیر رو بخونم به مشکل بر میخورم :
(* Var
Value: String;
const
LF = #10;
CR = #13;
CRLF = CR + LF;*)
with Files do
begin
Value :=QuotedStr(File_Name) + ',' + CRLF +
QuotedStr(File_Size) + ',' + CRLF+
QuotedStr(File_Description) + ',' + CRLF +
QuotedStr(File_Date_Time)+ ',' + CRLF +
QuotedStr(File_Data);
MessageBox(0, pchar(Value), '', MB_OK + MB_ICONINFORMATION);
end;
(به اون CRLF توجه نکنید برای خوانی متن MessageBox گذاشتم اگه نباشه هم فرقی نداره )
شما میتونید توی عکس زیر نتیجه رو ببینید که توی MessageBox فقط دوتا مقدار رو نشون میده.
اما متن داخل Memo درسته
98707