‫۹ سال قبل، پنجشنبه ۲۶ شهریور ۱۳۹۴، ساعت ۱۳:۲۱
سلام
متاسفانه هنوز رشته ترکیبی از عدد و حروف انگلیسی در تبدیل برعکس میشه، مثلا وقتی دارم Rb0027 بعد از تبدیل میشه 0027bR . من اومدم قبل از تبدیل برعکسش کردم که درست بشه ورودی بهش 0027bR دادم و بعد از تبدیل همون Rb0027 که میخواستم رو تو سایت بیمه نمایش داد.
‫۹ سال و ۱ ماه قبل، یکشنبه ۸ شهریور ۱۳۹۴، ساعت ۱۷:۰۱
مرسی با این کد کاملا صحیح کاراکترها تبدیل میشه. اما همچنان زمان آپلود فایل خطا میداد که مقدار فیلد شماره لیست در فایل بیمه شدگان صحیح نیست.
یک راه دیگه رو امتحان کردم که بالاخره جواب داد! در فولدر DataBase برنامه تامین اجتماعی دو فایل DSKKAR00  و DSKWOR00 دیدم که فیلدها در آن‌ها تعریف شده بود ولی دیتا براشون ثبت نشده، حدس زدم که برنامه تامین اجتماعی هم از همین فایل‌ها استفاده میکنه.
من در برنامه خودم کد مربوط به ایجاد فایل رو حذف و آدرس این فایل‌ها رو دادم که دیتا در این فایل‌ها Insert بشه و مشکل حل شد و سایت فایل‌های من رو قبول کرد !
فایل راهنمای تامین اجتماعی که ساختار جدول‌های این فایل‌ها رو نوشته بود اشتباه بوده و نوع فیلدهایی که در اون فایل گفته بود در برنامه خودشون استفاده نشده و در سایت تامین اجتماعی هم قبول نمی‌کرد! 
‫۹ سال و ۱ ماه قبل، سه‌شنبه ۳ شهریور ۱۳۹۴، ساعت ۱۵:۴۲
در این لینک function هایی در sql server تعریف شده که تبدیل ایران سیستم به یونیکد و برعکس رو انجام میده.
ir_sys.rar
من از این کد استفاده کردم و برای بعضی کلمه‌ها مثل لاله ، لیلا ، نازیلا و کلمه هایی شامل لا و ال مشکل داشت که تغییراتی در fnUnicodeToIranSystem انجام دادم و تا حدودی درست شد اما هنوز برای کلمه ای مثل "مالی" مشکل داره که به "ملی" و "ملای" تبدیل میشه. کلمه هایی که شامل ه هستند مثل "هانیه" یا "زهرا" هم روی سیستم خودم اگر تایپ شده باشه درست تبدیل میشه اما روی بعضی سیستم‌ها که تایپ میشه به "شانیه" و "زشرا" تبدیل میشه. ه به ش تبدیل میشه.   کسی میتونه راهنمایی کنه؟  
تغییری که انجام دادم این بود که به جای 
Set @Result = replace(@Result, char(145)+char(243), char(242))
نوشتم 
Set @Result = replace(@Result, char(243)+char(145), char(242))
Set @Result = replace(@Result, char(242)+char(243), char(242)+char(145)+char(243))
و برای رشته‌های عددی هم گفتم به جای 0 تا @Limit ، از @Limit تا 0 اجرا بشه چون عددهای از نوع رشته بعد از تبدیل برعکس میشد.
‫۹ سال و ۱ ماه قبل، یکشنبه ۲۵ مرداد ۱۳۹۴، ساعت ۱۷:۱۳
این کار رو هم انجام داده بودم ولی باز هم از فایل ایراد میگیره.
مشکل این هست که نرم افزار تامین اجتماعی طبق دستورلعمل خودش کار نکرده. مثلا در راهنما گفته در تاریخ از / استفاده نکنید و در متن عدد ننویسید اما در فایلی که برنامه خودشون میسازه تاریخ‌ها به صورت 94/04/04 هست و در برنامه هم اجازه نوشتن عدد در متن رو میده و در فایل هم در متن‌ها عدد هست.
شاید در تبدیل یونیکد به ایران سیستم جایی اشتباه هست. عددها رو که نیاز هست که به ایران سیستم تبدیل کنم؟ من فقط متن‌ها رو تبدیل کردم و عددها رو مستقیم در dbf نوشتم.
‫۹ سال و ۱ ماه قبل، یکشنبه ۲۵ مرداد ۱۳۹۴، ساعت ۱۴:۲۷
کلاسی که برای تولید فایل‌های لیست بیمه استفاده کرده ام و فایل راهنمای تامین اجتماعی را در ضمیمه فرستادم. مشکلی که هست، بعد از ساخته شدن فایل وقتی در سایت تامین اجتماعی آپلودش میکنم خطا میده که فیلد LISTNO در فایل بیمه شدگان درست نیست. اگر میشه کلاس‌های convert و کدهای مربوط به نوشتن در فایل dbf رو ببینید که درست هست یا نه. ممنون.
پروژه که کامل شد در سایت میذارمش که بقیه هم استفاده کنند. در اینترنت که سرچ میکردم خیلی‌ها برای تولید لیست بیمه از برنامه خودشون مشکل داشتند.
‫۹ سال و ۱ ماه قبل، شنبه ۲۴ مرداد ۱۳۹۴، ساعت ۱۶:۳۳
سلام
در تعریف فایل dbf در اجرای برنامه از local خطای The 'VFPOLEDB.1' provider is not registered on the local machine. را داشتم و فایل   VFPOLEDBSetup.msi را دانلود و نصب کردم و مشکل برطرف شد. بعد از اینکه برنامه را روی سرور آپلود کردم همین خطا را داشت و فایل  VFPOLEDBSetup.msi را روی سرور نصب و سرور را reset کردم اما همچنان همین خطا را میدهد.
‫۹ سال و ۲ ماه قبل، دوشنبه ۱۹ مرداد ۱۳۹۴، ساعت ۱۴:۴۴
با حالت Encoding .Default درست تبدیل میشه اما در خواندن فایل رشته برعکس میشد. شمارنده حلقه را در متد  get_Unicode_To_IranSystem  تغییر دادم که رشته برعکس ساخته شود.
 List<byte> IS_Result = new List<byte>();
            //for (int i = 0; i < limit; i++)
            for (int i = limit - 1; i >= 0; i--)
            {

                if (is_Lattin_Letter(b22[i]))
                {
                    cur = get_Lattin_Letter(b22[i]);

                    IS_Result.Add(cur);


                    pre = cur;
                }
                else if (i != 0 && i != b22.Length - 1)
                {
                    cur = get_Unicode_To_IranSystem_Char(b22[i - 1], b22[i], b22[i + 1]);

                    if (cur == 145) // برای بررسی استثنای لا
                    {
                        if (pre == 243)
                        {
                            IS_Result.RemoveAt(IS_Result.Count - 1);
                            IS_Result.Add(242);
                        }
                        else
                        {
                            IS_Result.Add(cur);
                        }
                    }
                    else
                    {
                        IS_Result.Add(cur);
                    }



                    pre = cur;
                }

            }

‫۹ سال و ۲ ماه قبل، دوشنبه ۱۹ مرداد ۱۳۹۴، ساعت ۰۱:۱۳
در متد get_Unicode_To_IranSystem  نوع لیست اشتباه است، من به جای آن List<byte> نوشتم. این لیست رو چطور میشه به string تبدیل کرد؟
‫۹ سال و ۲ ماه قبل، شنبه ۱۷ مرداد ۱۳۹۴، ساعت ۱۵:۳۳
من در ثبت اطلاعات در فایل dbf یک مشکل دارم. وقتی فیلد جدول از نوع nvarchar هست چطور باید دیتا رو به کوئری بفرستم؟ تو اینترنت جستجو کردم و چند راه مختلف رو امتحان کردم اما همش syntax error میده. 
این کد رو نوشتم:
string dbfDirectory = Server.MapPath("~/Content/") + "myDBF.dbf";
            
            string connectionString = "Provider=VFPOLEDB.1;Data Source=" + dbfDirectory + ";Password=;Collating Sequence=MACHINE"; 
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                connection.Open();
                string CreateTableK = "Create Table myDBF (dsw_id1 int, dsw_fname v(250), dsw_lname v(250) )";
                OleDbCommand cmdCreateTable = new OleDbCommand(CreateTableK, connection);
                cmdCreateTable.ExecuteNonQuery();

                OleDbCommand cmd2 = new OleDbCommand("Insert Into myDBF Values (1, @param1, @param2)", connection);
                cmd2.Parameters.AddWithValue("@param1", "شهرزاد");
                cmd2.Parameters.AddWithValue("@param2", "جواهری");
                OleDbCommand cmd3 = new OleDbCommand("Insert Into myDBF Values (2, 'ma', 'bi')", connection);
                
                cmd2.ExecuteNonQuery();
                cmd3.ExecuteNonQuery();

                connection.Close();
            }
روی خط cmd2.ExecuteNonQuery();  خطای syntax error میده.
باید عبارت فارسی رو به ایران سیستم تبدیل و بعد در فایل اضافه کنم. برای این تبدیل هم این لینک  رو دیدم، اما بعد از تبدیل یک رشته از بایت میده، چطور باید در فایل نوشته بشه؟
‫۹ سال و ۲ ماه قبل، شنبه ۱۷ مرداد ۱۳۹۴، ساعت ۱۵:۲۷
من بعد از دانلود کد از github با Arabic1256 = 1256 و کانکشن "Provider=VFPOLEDB.1;Data Source=" + fileLocation + ";Extended Properties=dBASE IV" این مشکل رو داشت. وقتی  تغییرات گفته شده در یک نکته تکمیلی را انجام دادم مشکل برطرف شد.