PDA

View Full Version : Update Database



(سیدشریفی)
شنبه 12 اردیبهشت 1383, 17:59 عصر
باسلام
من برنامه ای نوشته ام که بصورت شمارنده عمل میکند و آخرید عدد را از بانک اطلاعاتی خوانده و یکی به آن اضافه نموده و در بانک اطلاعاتی ذخیره میکند .
این برنامه روی کامپیوتر درست کار میکند ولی در موقع انتقال آن به هاست فقط قسمت خواندن اطلاعات درست کار کرده و قسمت آپدیت درست کار نمیکند و خطا میگیرد .
کد نمونه را در پایین قرار میدهم لطفا راهنمایی کنید .


Dim My_DS As DataSet
Dim My_DA As System.Data.OleDb.OleDbDataAdapter

Dim My_StrConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("bin\Counter.mdb")
Dim My_Conn As New System.Data.OleDb.OleDbConnection(My_StrConnection String)

Dim My_CB As System.Data.OleDb.OleDbCommandBuilder
Dim My_Con As Long
Dim My_Con_Str As String

My_Conn.Open()

My_DA = New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM Con", My_Conn)

My_CB = New System.Data.OleDb.OleDbCommandBuilder(My_DA)

My_DS = New DataSet("MS_Access_DataSet")
My_DA.Fill(My_DS, "MS_Access_DataSet")

If My_DS Is Nothing Then Return

With My_DS.Tables("MS_Access_Dataset").Rows(0)

My_Con = IIf(IsDBNull(.Item("Con")), "", .Item("Con"))

My_DS.Tables("MS_Access_Dataset").Rows(0).Item("con") = My_Con + 1
My_DA.Update(My_DS, "MS_Access_DataSet")

My_Con_Str = "تعدادبازدیدکننده " + Str(My_Con + 1) + " نفر"
TextBox1.Text = My_Con_Str

End With

My_Conn.Close()

:roll:

Farhad.B.S
یک شنبه 13 اردیبهشت 1383, 00:52 صبح
خطایی رو که اتفاق افتاده ذکر نکردید ؟
احتمالا اجازه نوشتن بر روی فایل ام دی بی مورد استفاده رو ست نکردید.

(سیدشریفی)
یک شنبه 13 اردیبهشت 1383, 10:29 صبح
آقا فرهاد چگونه باید اجازه نوشتن بر روی فایل را ست بکنم
من در ASP.net تازه کارم .
برای دیدن خطای برنامه میتوانید به این لینک نگاه کنید

http://www.ali110.net/counter.aspx

باتشکر

:roll:

Farhad.B.S
یک شنبه 13 اردیبهشت 1383, 17:51 عصر
به FTP سایتتون برید و فایل web.config موجود رو دانلود کنید ، حالا اون رو توسط یه ویرایشگر مثل Notepad باز کرده و قسمت زیر رو در اون پیدا کنید :

<configuration>
<system.web>
<customErrors mode="RemoteOnly"/>
</system.web>
</configuration>
حالا RemoteOnly رو به On تغییر بدید و اون رو ذخیره کنید. سپس فایل جدید رو دوباره در جایی که بود آپلود کنید.
با این کار خطایی رو که واقعا اتفاق می افته خواهید دید.
--------------------
برای دادن دسترسی به فایل دیتابیس ، به کنترل پنل سایتتون رفته و (احتمالا) در قسمت Files and directories میزان دسترسی به فایل اکسس رو به Everyone تغییر بدید.

(سیدشریفی)
دوشنبه 14 اردیبهشت 1383, 10:42 صبح
من Error Mode را در حالت On قرار دادم و فایل را دوباره به سایت فرستادم

درقسمتی که باید میزان دسترسی را تغییر بدهم مشکل دارم و نمیدانم این کار را از کجا باید انجام دهم لطفا بیشتر توضیح دهید و محلی را که باید از آنجا این کار را انجام دهم دقیقتر معرفی نمایید .

قبلا از زحمات شما متشکرم

(سیدشریفی)
دوشنبه 14 اردیبهشت 1383, 10:44 صبح
در ضمن یادم رفت بگویم من از ویندوز XP استفاده میکنم .

mes
دوشنبه 14 اردیبهشت 1383, 20:11 عصر
سید جان این رو امتحان کن درست میشه.

Imports System.Data
Imports System.Data.OleDb
Public Class WebForm3
Inherits System.Web.UI.Page
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub

#End Region
Dim con As OleDbConnection
Dim cmd As OleDbCommand
Dim da As OleDbDataAdapter
Dim ds As New DataSet()
Dim newrow As DataRow
Dim cb As OleDbCommandBuilder
Protected WithEvents TextBox3 As System.Web.UI.WebControls.TextBox
Dim dr As OleDbDataReader

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
con = New OleDbConnection("provider=microsoft.jet.oledb.4.0;" & "data source=" + Server.MapPath("/yalasarat/view.mdb"))
con.Open()
cmd = New OleDbCommand("select t1.* from t1", con)
da = New OleDbDataAdapter("Select t1.* from t1", con)
da.Fill(ds, "t1")

ds.Tables("t1").Rows(0).Item("val") = ds.Tables("t1").Rows(0).Item("val") + 1
TextBox1.Text = ds.Tables("t1").Rows(0).Item("val")
TextBox3.Text = Request.UserHostAddress
cb = New OleDbCommandBuilder(da)
da.InsertCommand = cb.GetInsertCommand
cmd.UpdatedRowSource.ToString()
da.Update(ds, "t1")
con.Close()

End Sub



End Class

سید جان شاید اشکال شما تو ÷یدا کردن و ایجاد کانکشین باشه دقت کن اونجایی که آدرس سرور رو ÷یدا میکنه تو سایتتون همون روت اصلی و من مثلا تو مثالم باید تو روتم یه دایرکتوری yalasarat داشته باشم.و داخل اون فایلم رو بزارم درست.اینم امتحان کنید فک نکنم مشکلی بده

mes
دوشنبه 14 اردیبهشت 1383, 20:17 عصر
راستی سید جا ن مام تبریزیم این موسسه شما کجاست؟info@yalasarat.com

(سیدشریفی)
سه شنبه 15 اردیبهشت 1383, 11:44 صبح
آقا مهدی سلام
از جوابی که دادید ممنون ولی متاسفانه کار نکرد من مشکلم را یک بار دیگر مطرح میکنم شاید به نتیجه برسیم
من وقتی کد زیر را در سایت قرار میدهم کاملا درست کار میکند و اطلاعات را از فایل دیتابیس میخواند و نمایش میدهد

Dim My_DS As DataSet
Dim My_DA As System.Data.OleDb.OleDbDataAdapter

Dim My_StrConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("/bin/Counter.mdb")
Dim My_Conn As New System.Data.OleDb.OleDbConnection(My_StrConnection String)

Dim My_CB As System.Data.OleDb.OleDbCommandBuilder
Dim My_Con As Long
Dim My_Con_Str As String

My_Conn.Open()

My_DA = New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM Con", My_Conn)

My_CB = New System.Data.OleDb.OleDbCommandBuilder(My_DA)

My_DS = New DataSet("MS_Access_DataSet")
My_DA.Fill(My_DS, "MS_Access_DataSet")

If My_DS Is Nothing Then Return

My_Con = My_DS.Tables("MS_Access_Dataset").Rows(0).Item("con")
'My_DS.Tables("MS_Access_Dataset").Rows(0).Item("con") = My_Con + 1
'My_DA.Update(My_DS, "MS_Access_DataSet")

My_Con_Str = "تعدادبازدیدکننده " + Str(My_Con + 1) + " نفر"
TextBox1.Text = My_Con_Str

My_Conn.Close()

ولی وقتی دو سطر زیر را به آن اضافه میکنم برنامه درست کار نمیکند پس نتیجه میگیریم که موقع نوشتن بر روی فایل دیتابیس خطا بوجود می آید

My_DS.Tables("MS_Access_Dataset").Rows(0).Item("con") = My_Con + 1
My_DA.Update(My_DS, "MS_Access_DataSet")

همانطور که آقای فرهاد گفتند شاید اشکال کار این باشد که من باید اجازه نوشتن بر روی فایل دیتابیس را ست کنم .
من هم این کار را بلد نیستم و نمیدانم این کار را از کجا انجام دهم و توجه کنید که من از ویندوز XP استفاده میکنم .
پس احتمالا اگر من بتوانم مجوز نوشتن بر روی فایل دیتابیس را صادر کنم مشکل من حل خواهد شد
باتشکر
:(

(سیدشریفی)
سه شنبه 15 اردیبهشت 1383, 11:51 صبح
راستی آقا مهدی از من پرسیده بودید یادم رفت !
عجله دارم جایی باید بروم
بعد از ظهر برات مینویسم
:wink:

mes
سه شنبه 15 اردیبهشت 1383, 15:50 عصر
÷س رو کامپوتر درست کار می کنه و روی اینترنت هم میتونه به فایلت وصل شه و اطلاعات بخونه؟راستش من نمیدونم از اجازه داشتن یا نداشتنه تا حالا این مشک رو نداشتم حتما رو کامپیوترتون درست کار میکنه؟

(سیدشریفی)
سه شنبه 15 اردیبهشت 1383, 16:40 عصر
آقا مهدی سلام
در اول این را بگویم :
پرسیده بودی این موسسه کجاست باید بگویم در سردرود من خودم بچه تبریز هستم ولی بخاطر کارم در آنجا موسسه دایر کرده ام و هر روز برای کار به شهر سردرود میروم و کارم هم مربوط به تابلو فرش میباشد (نرم افزار فرش) و سردرود هم که میدانی در این کار پیشتاز و حرف اول را در ایران میزند .

پرسیده بودی برنامه ام روی کامپیوتر کار میکند ؟ باید بگویم بلی و خوب هم کار میکند همانطور که آقا فرهاد گفتند اشکال کار احتمالا در مجوز نوشتن بر روی فایل دیتابیس میباشد ولی من نمیدانم این کار را از کجا باید انجام دهم .
در یکی از موضوعات آقای نصیری هم به این مشکل اشاره کرده اند ولی چون روش انجام کار را روی ویندوز 2000 توضیح داده اند من نتوانستم این کار را انجام دهم چون من در ویندوز XP کار میکنم .

پس اگر راه حل مجوز دار کردن قابل نوشتن بر روی فایل دیتابیس را پیدا کنم احتمالا مشکل من حل خواهد شد .

در ضمن اگر خواستی بیشتر با هم آشنا شویم میتوانی در سایتم شماره تلفن مرا پیدا کنی .
یک سوال داشتم . عنوان سایتی که ایمیل خود را نوشته ای به چه معنی میباشد ؟

http://www.barnamenevis.org/forum/viewtopic.php?t=6726

:) :wink:

Farhad.B.S
سه شنبه 15 اردیبهشت 1383, 18:59 عصر
دادن دسترسی در کنترل پنل های مختلف متفاوت هستش ،هاست شما از چه کترل پنلی استفاده میکنه ؟
معمولا میتونید قسمت دادن دسترسی ها رو در جایی مثل Files and directories و یا در ACLManager -> ACLPermissions پیدا کنید.
سپس باید فایل MDB مورد استفاده رو پیدا کرده و با استفاده از Set Permission (یا چیزی شبیه به این) برای یوزر Everyone دسترسی Write رو هم ایجاد کنید.

در ضمن ، شرمنده ، مثل این که من یه چیزی رو اشتباه به شما گفتم :P ، (امان از ...) حالت customError رو که در بالا به اون اشاره شد ، بجای On به off تغییر بدید و فایل وب کانفیگ رو دوباره آپلود کنید.
هنوز خطای واقعی مشخص نیست :flower:

(سیدشریفی)
چهارشنبه 16 اردیبهشت 1383, 09:39 صبح
آقا فرهاد من حالت customError را به Off تغییر دادم .
درضمن متوجه موضوعی شدم و اینکه آیا باید مجوز نوشتن بر روی فایل را از روی هاست تنظیم کنم یا از روی کامپیوتر ؟
اگر از روی هاست میباشد میروم به کنترل پانل هاستم سری بزنم شاید مشکلم حل شد در ضمن شمانیز زحمت کشیده یک بار دیگر به این آدرس بروید و خطای موجود را ببینید شاید اشکال کار از جای دیگری باشد .
ممنون
:)

(سیدشریفی)
چهارشنبه 16 اردیبهشت 1383, 09:52 صبح
آقا فرهاد سلام
مشکل من حل شد
من میخواستم این تنظیم را از روی کامپیوتر انجام دهم قافل از اینکه باید از روی هاستم و از کنترل پانل هاست ...
از شما و همچنین از آقا مهدی که چند روزی است در حل مشکل من مرا یاری نمودید کمال تشکر را دارم .
:lol:
:تشویق: