ورود

View Full Version : سوال: مرتب سازی فارسی در اکسس



Modernidea
دوشنبه 31 تیر 1387, 06:16 صبح
با سلام
هنگام سورت کردن داده های فارسی در دلفی که با بانک اکسس در ارتباط است حرف "ک" بعد از حرف "ی" و در آخر از همه حروف می آید. البته با دستور اس کیو ال این کار را انجام میدم. چطوری میشه این مشکل رو حل کرد؟
ممنون می شم اگه جواب بدید؟

SYNDROME
دوشنبه 31 تیر 1387, 06:32 صبح
فکر کنم اگر ک و ی را اصلاح کنید مشکلتان حل بشود.
لینک زیر به شما کمک می کند
http://barnamenevis.org/forum/%D9%85%D8%A8%D8%A7%D8%AD%D8%AB-%D9%85%D8%B1%D8%A8%D9%88%D8%B7-%D8%A8%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AF%D8%B1-delphi/71262-%D8%A7%D8%B5%D9%84%D8%A7%D8%AD-%DA%A9%D8%A7%D8%B1%DA%A9%D8%AA%D8%B1%D9%87%D8%A7%D B%8C-%DA%A9-%D8%AF%D8%B1%D8%B2%D9%85%D8%A7%D9%86-%D9%88%D8%B1%D9%88%D8%AF.html
موفق باشید

Modernidea
دوشنبه 31 تیر 1387, 21:40 عصر
ممنون از راهنماییتون.یک سوال دیگه دارم!
چون داده های قبلی با "ک" اشتباه ثبت شده می خواستم با یک کواری هر چی حرف "ک" است رو به حرف "ک" تصحیح کنم. اما این کو اری رو بلد نیستم. لطفا کمک کنید.(با اکسس)
با تشکر فراوان.

SYNDROME
دوشنبه 31 تیر 1387, 22:00 عصر
ممنون از راهنماییتون.یک سوال دیگه دارم!
چون داده های قبلی با "ک" اشتباه ثبت شده می خواستم با یک کواری هر چی حرف "ک" است رو به حرف "ک" تصحیح کنم. اما این کو اری رو بلد نیستم. لطفا کمک کنید.(با اکسس)
با تشکر فراوان.
باید اطلاعات را از بانک بخوانید و سپس با تابع زیر به حالت استاندارد تبدیل کنید و دوباره در بانک ذخیره کنید.


Function ChangeChar(T : String) : String;
Var
i : Integer;
Begin
For i:=1 To Length(T) Do
Begin
IF Ord(T[i]) = 223 Then
T[i] := Chr(152)
Else IF Ord(T[i]) = 237 Then
T[i] := Chr(236);
End;
Result := T;
End;

موفق باشید

Modernidea
دوشنبه 31 تیر 1387, 23:41 عصر
این طور که شما گفتید "t" چه مشخصه ای است.چه طوری هر رکورد از فیلد "نام اجناس" را بخونم و این تابع را استفاده کنم؟

Modernidea
سه شنبه 01 مرداد 1387, 00:09 صبح
آقا حرف "ه" همینجوریه. بعد از حرف "ن" قرار گرفته.

SYNDROME
سه شنبه 01 مرداد 1387, 06:56 صبح
آقا حرف "ه" همینجوریه. بعد از حرف "ن" قرار گرفته.
فقط حروف ی و ک دارای چنین مشکلی هستند.
متغییر T همان مقدار فیلد شما است که باید به آن پاس کنید و نتیجه تابع هم همان رشته فقط با کاراکترهای اصلاح شده است.
موفق باشید

Modernidea
سه شنبه 01 مرداد 1387, 09:06 صبح
سلام
شرمنده. داداش، کد 236 که برای ی استفاده میشه اشتباه نیست. چون حرف بعد، به اون نمی چسبه مثل " ی اسر" نوشته میشه.

Modernidea
سه شنبه 01 مرداد 1387, 10:00 صبح
یک مشکل دیگه: به این کد ها توجه کنید : "ن=228" "و = 230" "ه = 229"
حالا چیکار کنم. این کدها تو سیستم من و جایی که نرم افزار نصب هست به این شکل است.

SYNDROME
سه شنبه 01 مرداد 1387, 20:17 عصر
یک مشکل دیگه: به این کد ها توجه کنید : "ن=228" "و = 230" "ه = 229"
حالا چیکار کنم. این کدها تو سیستم من و جایی که نرم افزار نصب هست به این شکل است.
من که منظورتان را متوجه نشدم.
کمی واضحتر توضیح دهید.
موفق باشید

Modernidea
سه شنبه 01 مرداد 1387, 22:19 عصر
منظورم اینه که در آن کد هایی که گفتم کد حرف "ه" کمتر از حرف "و" است و در جدول قبل از حرف واو قرار می گیرد.

Modernidea
چهارشنبه 02 مرداد 1387, 17:03 عصر
حاجی جواب نمیدی!

SYNDROME
چهارشنبه 02 مرداد 1387, 19:57 عصر
منظورم اینه که در آن کد هایی که گفتم کد حرف "ه" کمتر از حرف "و" است و در جدول قبل از حرف واو قرار می گیرد.
تا حالا من جزء حرف "ی" و "ک" با حرف دیگری مشکل پیدا نکرده ام.
توصیه می کنم نوع فیلد خود را تغییر دهید و دوباره اطلاعات را وارد کنید ببینید باز هم مشکل دارید
موفق باشید

Modernidea
پنج شنبه 03 مرداد 1387, 09:00 صبح
نه از اون راهی که شما گفتی درست نشد.راستیتش من تازه کارم و اصلا اصولی برنامه نویسی رو یاد ندارم.
یک خواهش دارم :
دیتابیس من در جودل1 فیلدهای کد-نام کالا-قیمت خرید-قیمت فروش-گروه و تاریخ را دارد. من هر کار کردم یک کو اری بنویسم که هرچی حرف "ک" (چه در فیلد گروه و چه در فیلد نام کالا)هست را تصحیح کند، نتوانستم.از فانکشن هم چیزی سر در نمیارم.
ممنون میشم اگر این کو اری را برای من بنویسد.
درضمن از کد قبلی که در مورد تصحیح حروف نوشتید اصلا سر در نمیارم.:خجالت:

SYNDROME
پنج شنبه 03 مرداد 1387, 09:42 صبح
دوست عزیز
به شکل زیر عمل کنید.


var
vName : String;
.....
ADO.SQL.Text := 'Select * From Tbl_Test';
ADO.Open;
While Not ADO.EOF Do
Begin
vName := ADO.FieldByName('Name').Asstring;
vName := ChangeChar(vName);
ADO.Edit;
ADO.FieldByName('Name').Asstring := vName;
ADO.Post;
ADO.Next;
End;

موفق باشید

Modernidea
پنج شنبه 03 مرداد 1387, 09:48 صبح
دوست عزیز این کد که تمام رشته رو با کلمه مورد نظر عوض میکنه!

SYNDROME
پنج شنبه 03 مرداد 1387, 19:19 عصر
دوست عزیز این کد که تمام رشته رو با کلمه مورد نظر عوض میکنه!
کد زیر را در برنامه تست کنید.
خودم تست کردم جواب داد


procedure TForm_Main.Button1Click(Sender: TObject);
Function ChangeChar(T : String) : String;
Var
i : Integer;
Begin
For i:=1 To Length(T) Do
Begin
IF Ord(T[i]) = 152 Then
T[i] := Chr(223)
Else IF Ord(T[i]) = 336 Then
T[i] := Chr(237);
End;
Result := T;
End;
Var
S : string;
begin
DM_Main.ADO_MultiTask.SQL.Text := 'Select * From Tbl_Test';
DM_Main.ADO_MultiTask.Open;
DM_Main.ADO_MultiTask.First;
While Not DM_Main.ADO_MultiTask.Eof Do
Begin
S := DM_Main.ADO_MultiTask.FieldByName(FieldName).AsStr ing;
DM_Main.ADO_MultiTask.Edit;
DM_Main.ADO_MultiTask.FieldByName(FieldName).AsStr ing := ChangeChar(S);
DM_Main.ADO_MultiTask.Edit;
DM_Main.ADO_MultiTask.Next;
End;
end;

موفق باشید

Modernidea
پنج شنبه 10 مرداد 1387, 19:28 عصر
شکراً شکرا