‫۹ سال و ۱ ماه قبل، یکشنبه ۲۵ مرداد ۱۳۹۴، ساعت ۱۴:۲۷
کلاسی که برای تولید فایل‌های لیست بیمه استفاده کرده ام و فایل راهنمای تامین اجتماعی را در ضمیمه فرستادم. مشکلی که هست، بعد از ساخته شدن فایل وقتی در سایت تامین اجتماعی آپلودش میکنم خطا میده که فیلد LISTNO در فایل بیمه شدگان درست نیست. اگر میشه کلاس‌های convert و کدهای مربوط به نوشتن در فایل dbf رو ببینید که درست هست یا نه. ممنون.
پروژه که کامل شد در سایت میذارمش که بقیه هم استفاده کنند. در اینترنت که سرچ میکردم خیلی‌ها برای تولید لیست بیمه از برنامه خودشون مشکل داشتند.
‫۹ سال و ۱ ماه قبل، شنبه ۲۴ مرداد ۱۳۹۴، ساعت ۱۷:۱۸
این درایور قدیمی، 32 بیتی هست. برنامه‌های دات نتی در سیستم‌های 64 بیتی زمانیکه در حالت AnyCPU کامپایل شده‌اند، امکان دسترسی به DLLهای native غیر 64 بیتی را ندارند.
راه حل:
- در مورد برنامه‌های Web، تنظیمات Any CPU و امثال آن تاثیری ندارند و مهم نیستند. در اینجا باید به تنظیمات Application pool در IIS مراجعه کرده و Enable 32 bit Applications را انتخاب کنید.


- اگر برنامه‌ی دسکتاپ هست، باید platform target خواص پروژه را به X86 تنظیم کنید.
‫۹ سال و ۱ ماه قبل، شنبه ۲۴ مرداد ۱۳۹۴، ساعت ۱۶:۳۳
سلام
در تعریف فایل 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;
                }

            }

‫۹ سال و ۲ ماه قبل، دوشنبه ۱۹ مرداد ۱۳۹۴، ساعت ۰۱:۳۸
نکته‌ی اصلی و کلی به این شکل هست:
string ascii =  Encoding.ASCII.GetString(list.ToArray());
سایر حالت‌های Encoding.UTF8 و موارد ممکن دیگر را هم تست کنید تا به جواب برسید.
‫۹ سال و ۲ ماه قبل، دوشنبه ۱۹ مرداد ۱۳۹۴، ساعت ۰۱:۱۳
در متد get_Unicode_To_IranSystem  نوع لیست اشتباه است، من به جای آن List<byte> نوشتم. این لیست رو چطور میشه به string تبدیل کرد؟
‫۹ سال و ۲ ماه قبل، یکشنبه ۱۸ مرداد ۱۳۹۴، ساعت ۰۵:۳۶
برای ایجاد بانک اطلاعاتی جدید فاکس پرو نیاز است فقط مسیر پوشه را داد و نه مسیر فایل را. نام جدول مشخص شده، تبدیل به نام فایل تولیدی می‌شود:
//ایجاد بانک اطلاعاتی خالی
var dir = @"D:\Prog\"; // این مسیر پوشه است و نه مسیر فایل
using (OleDbConnection connection = new OleDbConnection(@"Provider=VFPOLEDB.1;Data Source=" + dir))
{
    using (var command = new OleDbCommand())
    {
        command.Connection = connection;
        command.Connection.Open();
        command.CommandText = "Create Table myDBF (dsw_id1 int, dsw_fname v(250), dsw_lname v(250) )";
        command.CommandType = CommandType.Text;
        command.ExecuteNonQuery();
    }
}
برای ثبت اطلاعات پارامتری در بانک اطلاعاتی فاکس پرو فقط و فقط پارامترهایی با نام ? مجاز هستند (و نه هیچ حالت دیگری):
//ثبت اطلاعات در بانک ایجاد شده
var dbPath = Path.Combine(dir, "myDBF.dbf");
using (OleDbConnection connection = new OleDbConnection(@"Provider=VFPOLEDB.1;Data Source=" + dbPath))
{
    using (var command = new OleDbCommand())
    {
        command.Connection = connection;
        command.Connection.Open();
        command.CommandText = "Insert Into myDBF Values (1, ?, ?)";
        command.Parameters.AddWithValue("?", "B"); // فقط علامت سؤال در اینجا کار می‌کند و نه هیچ چیز دیگری
        command.Parameters.AddWithValue("?", "A");
        command.CommandType = CommandType.Text;
        command.ExecuteNonQuery();
    }
}
- متد اصلی آن مطلب «public List» است که این لیست را باید تبدیل به رشته کنید.
‫۹ سال و ۲ ماه قبل، شنبه ۱۷ مرداد ۱۳۹۴، ساعت ۱۵:۳۳
من در ثبت اطلاعات در فایل 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 میده.
باید عبارت فارسی رو به ایران سیستم تبدیل و بعد در فایل اضافه کنم. برای این تبدیل هم این لینک  رو دیدم، اما بعد از تبدیل یک رشته از بایت میده، چطور باید در فایل نوشته بشه؟