سلام دوستان.
یه تفاوتهایی در ارتباط با بانک در 2003 با 2005 دیده میشه.
لطفا راهنمایی کنید .
Printable View
سلام دوستان.
یه تفاوتهایی در ارتباط با بانک در 2003 با 2005 دیده میشه.
لطفا راهنمایی کنید .
سلامنقل قول:
نوشته شده توسط meh_secure
بنظر من بیشترین تغییر بین 2003 و 2005 مربوط به ADO.NET است که اعصاب منو ریخته بهم.
در پناه حق موفق باشید و پرتوان
با سلام خدمت آقای حامد محمدی
یه سوال که شاید ربطی هم به این تاپیک نداشته باشد:
آیا شما در VS2005 نیز همچنان برای ایجاد ارتباط با بانک از کد نویسی در Runtime استفاده میکنید یا به استفاده از ویزارد ها و ابزار ارتباط با بانک و کار بر روی آن تغییر مسیر داده اید؟
جون من که بالا اومد دیشب موقع Update همش Syntax Error میداد در حالیکه همه چیزش درست بود
Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=harasat.mdb;Persist Security Info=False"
Dim StrSQL As String = "Select * from personal"
Dim adapter As New OleDb.OleDbDataAdapter(StrSQL, connString)
Dim newRow As New DataSet
adapter.Fill(newRow, "Personal")
Dim dr As DataRow = newRow.Tables("personal").NewRow
dr(0) = "7731017"
dr(1) = "سایت"
dr(2) = "برنامه نویس"
newRow.Tables("personal").Rows.Add(dr)
Dim sd As New OleDb.OleDbCommandBuilder(adapter)
adapter.Update(newRow, "Personal")
adapter.Dispose()
newRow.Dispose()
sd.Dispose()
وخطا:
Syntax error in INSERT INTO statement.
هرچی کارش کردم نشد به نظر شما اشکال کار از کجاست
سلام
من همیشه دوست داشتم LowLevel کار کنم. میدونم ویزاردهای 2005 فوق العاده قدرتمنده اما من کدزدن رو ترجیح میدم. اینجوری دستم بازتره. وقتی که آدم کد میزنه حواسش به همه جا هست.نقل قول:
نوشته شده توسط M.kavyani
اصلا میدونی تفاوت بین کدزدن و ویزاردها چیه؟
مثل اینکه شما بخواهی یک SELECT سنگین با چندتا INNER JOIN و OUTER JOIN داشته باشی و اونو بجای اینکه خودت تایپ کنی، بری از QUERY BUILDER بسازیش(البته QUERY BUILDER تمام امکانات SELECT رو نمیتونه بسازه). اینجوری کار رو درست انجام دادی اما خودت شاید مفهوم LEFT OUTER JOIN رو درست متوجه نشده باشی، چون شما یک گزینه رو تیک زدید و LEFT OUTER JOIN به SELECT اضافه شد.
وقتی که آدم دست به کیبورد میبره میدونه داره چکار میکنه و اگه فردا خواست در برنامشو تغییر بده دستش بازتره.
البته این نظر منه که به اعتقاد خیلیها غلطه.
دیگه قضاوت رو بر عهده خودت میزارم...
در پناه حق موفق باشید و پرتوان
با سلام
جناب آقای محمدی 100 درصد با شما موافقم و متوجه هستم چی میگید ولی من ترجیح میدم که از ویزارد استفاده کنم و اینجوری درصد خطا کمتر میشه و سرعت نوشتن برنامه بالا تر میره اما چیزهایی رو که شما گفتیید نیز باید در نظر گرفت. در مواردی که ویزارد ها نیاز من رو برآورده نمی کنند شروع به تغییر کد ایجاد شده توسط ویزارد میکنم که خود مایکروسافت در این مورد اخطار داده که احتمال به هم ریختن برنامه وجود داره. مخصوصا" در استفاده از بانک ها و....
در هر حال از پاسخ شما کمال تشکر را دارم و برای شما آرزوی موفقیت و کامروایی میکنم
خب بالاخره برای حل این مشکل چه کنیم؟
برای رفع مشکل نکات زیر رو در نظر بگیر :
1 - ببین جدول مورد نظرت دارای یک فیلد PK هست یا نه اگر نبود حتما ایجاد کن
2 - به جای استفاده از CommandBuilder مستقیما دستور Update رو بنویس تا مجبور نباشی هر بار دیتاست رو Fill کنی
3 - کانکشن رو قبل از عمل Update باز کن Cnn.Open
در ضمن همیشه سعی کن نامی به غیر از نامهای رزرو شده رو برای اشیاء انتخاب کنی در
کدهای بالا NewRow اسم مناسبی برای دیتاست نیست
================================================== =====
در مورد کار با ADO.NET 2.0 اگر مشکل خاصی دارین بگین چون کار باهاش خیلی خیلی راحتتر و آسان شده
اونوقت این یعنی چی ؟ میشه بیشتر توضیح بدهید . متشکریمنقل قول:
ببین جدول مورد نظرت دارای یک فیلد PK هست یا نه اگر نبود حتما ایجاد کن
یعنی جدول شما حتما باید یه فیلد به عنوان کلی اصلی داشته باشد یعنی یه فیلد با مقدار منحصر بفرد در هر رکورد حتی اگر AutoNumber هم بگذاری و اون رو PK کنی مشکل حل میشه
در ادامه فرمایشات ایشون باید بگم اگه جدولی PK نداشته باشه، اگه مقدار مثلا تمام فیلدها یکسان باشد، SQL Server به شما اجازه DELETE رو نمیده. چون نمیتواند تفاوتی بین این دو رکورد پیدا کند.نقل قول:
نوشته شده توسط sh
در پناه حق موفق باشید و پرتوان
از جوابهاتون ممنون در اینکه که یک جدول باید حتی الامکان یک کلید اصلی داشته باشد شکی نیست فقط اصطلاح PK برام جدید بود که متوجه شدم مخفف همان (Primary Key) می باشد.
در ضمن دوستان مشکل کدی رو که در بالا نوشته ام نمی دونند؟
چند روزه که باهاش دست و پنجه نرم می کنم و هنوز متوجه نشدم که چرا این خطا در خط مربوط به Update کردن رخ می دهد. اونهم یک خطا Syntax . همه چیز روهم بررسی کردم ظاهرا درست است تمام کدها رو هم از مثالهایی در vb.net2003 برداشتم اما نمی دونم چرا در vb.net2005 این خطا را می دهد.
از راهنماییهاتون بسیار ممنون
سلامنقل قول:
نوشته شده توسط احمد رایان
چرا لقمه رو داری دور دهنت میچرخونی.
یک دستور INSERT INTO بنویس و دیتاهاتو با این دستور داخل بانک قرار بده.
در پناه حق موفق باشید و پرتوان
از راهنماییتون ممنونم تلاشم رو می کنم
البته در کتاب راهنمای فارسی که از همین سایت گرفتم از همین روش برای دات نت 2003 استفاده کرده بود که من هم برای 2005 استفاده کردم و به بن بست خوردم
حامد جان این توضیحی که دادی خیلی جالب بود چون من رو این مسئله گیر کرده بودمنقل قول:
نوشته شده توسط Hamedm
ممنون
سلام. یعنی نمیشه بدون استفاده از PK این کار رو کرد؟ بالاخره باید یک روش استانداردی داشته باشه.
سلامنقل قول:
نوشته شده توسط meh_secure
منظورتون چیه؟
در پناه حق موفق باشید و پرتوان
منظور من این بود.نقل قول:
نوشته شده توسط Hamedm
تو وی بی 6 هم چنین مشکلی هست یا خیر؟؟
سلامنقل قول:
نوشته شده توسط meh_secure
عزیز جان این مشکل ربطی به زبان برنامه نویسی نداره. این ایرادو خود SQL Server میگیره. البته ایرادش هم درسته.
در پناه حق موفق باشید و پرتوان
من این رو نمی دونستم. البته تا حالا به این مشکل بر نخورده بودم.
بابا دمت گرم به این مشکل بر خورده بودم اما دلیلشو نمی دونستمنقل قول:
نوشته شده توسط Hamedm
یه سوال:
اگر دوفیلد یکسان داشته باشیم چگونه میشه پاکشون کرد؟ راهی داره یا باید مثل من کل تیبل رو پاک کنم و از نو....
این مشکل برای من در ابتدا پپیش اومد یعنی زمانی که من اطلاعات بسیار کمی در تیبل داشتم ولی اگر اطلاعات زیاد بشه چی؟
:متفکر:
سلامنقل قول:
نوشته شده توسط M.kavyani
بعضی از اوقات QUERY ANALYZER میتونه اونارو پاک کنه. اما در اکثر موارد نمیتونه. اول در QA امتحانش کن ببین میتونه پاک کنه یا نه.
اگه نتونست پاک کنه هیچ راهی نداری.
من معمولا برای حل این مشکل این کارو انجام میدم (این روش ایده خودمه 100درصد نمیگم بهترین روشه چون ممکنه راه بهتری هم داشته باشه):
اول تمام جدول رو بدون اون رکوردهای مشکل دار، درون یک DataTable میریزم. بعد با دستور DELETE TableName تمام رکوردهای جدول رو در بانک پاک میکنم (با این دستور رکوردهای مشکلدار هم پاک میشه). بعد DataTable که Fill کرده بودمو درون بانک انتقال میدم.
یادتون نره تمام این کارارو اگه خواستید انجام بدید درون Transaction انجام بدید. چون در غیر این صورت اگه وسط کار مشکلی پیش بیاد دیتاها از بین میره و برگردوندنشون مکافاته.
البته از قدیم گفتند پیشگیری بهتر از درمانه. سعی کنید هیچ جدولی رو بدون فیلد یکتا طراحی نکنید. منظورم ز فیلد یکتا، PK نیست. این فیلد یکتا میتونه uniqueidentifier و یا یک ID باشه که خودتون دارید موقع INSERT کردن رکورد تولید میکنید.
در پناه حق موفق باشید و پرتوان
آقای محمدی درست میگن. البته میشه مقدار چند تا فیلد رو روی هم PK قرار داد که تا حدی از بروز مشکل کم کنه. یا استفاده از یک ID که آقای محمدی فرموده بودند.
این قسمتی که برجسته اش کردم رو متوجه نشدم میشه توضیح بدی؟؟:متفکر:نقل قول:
نوشته شده توسط meh_secure
منظورم اینه که چند تا فیلد رو هم PK باشند. مثل ID و تاریخ و چند تا چیز دیگه
راجع کریستال report مقاله می خواهم اگر کسی دارد دریغ نکنه
اینم یه کد ردیف
راجع کریستال report مقاله می خواهم اگر کسی دارد دریغ نکنه
اینم یه کد ردیف
بخش کریستال ریپورت.
بخش کریستال ریپورت + کتاب کتاب کتاب :خجالت:نقل قول:
نوشته شده توسط mano
اینو من با حامد واقعا موافقم :لبخند: چون خودم هم خیلی سر این قضیه اذیتش کردم تا تفاوتهای جدید رو حالیم بشه :لبخند: .نقل قول:
نوشته شده توسط Hamedm