أسأل عن كيفية إنشاء ملف DSN في ODBC والخاص بالاتصال بقاعدة البيانات عن طريق الكود ، كيف يمكنني إنشاء هذا الملف عن طريق الكود مباشرة
DSN file
-09
الاخ العزيز
أعتقد انة ليس هناك كود صريح لعمل ملف ال dsn و لكن ما اعرف انك بالطبع يمكن عمل الملف من خلال الـ adodc و سوف ارفق لك بعد المعلومات التى يمكن ان نقوم من خلالها بعمل ملف الـ dns
1- المسار هو :
C:\Program Files\Common Files\ODBC\Data Sources
2- المسار فى الرجيسترى : ( و التى يمكن من خلالها بعمل الملف )
HKEY_LOCAL_MACHINE\Software\ODBC\
و يمكن من خلال الطريقة الثانية من عمل الملف
وشكرا
ارجوا مساعدتى للعمل كمبرمج اوراكل باى شركة خبرتى 1 سنه و ربنا الموفق
خبرى 6 سنوات فى فيجوال بيزك 6و ASP
أرجو المعذرةيا أخي إن كنت لم أستوعب الموضوع ربما لقصور في معلوماتي أنا
ولكن كيف سيتم إنشاء هذا الملف ممكن مثال ، ثم بعدها خصائص هذا الملف وكيفية اتصال هذا ال DSN بقاعدة البيانات
ومعذرة إن كنت أثقلت عليك
السلام عليكم ورحمة الله وبركاته
يمكنك يا اخي إنشاء DSN بالكود عن طريق دوال API الخاصه بالملف ODBC.DLL
وإليك هذا الشرح
example, the first time you run your app.
The SQLConfigDataSource ODBC API function is what you need, in that it allows you to create, modify or delete a DSN.
Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" (ByVal _ hwndParent As Long, ByVal fRequest As Long, ByVal lpszDriver As String, _ ByVal lpszAttributes As String) As Long
The first argument is the parent window's handle, and can be null (0& in VB). The second argument specifies the action to be performed: 1 to add, 2 to config and 3 to delete a DSN. The third argument is a string that specifies the driver to use: for example, to create a DSN from an Access database you must pass "Microsoft Access Driver (*.mdb)". The last parameter is a string that contains many information about the DSN, such as the DSN name, the source database file, the user name and the password (if any).
Here is function that makes easier the process to create or delete a DSN:
وهذا هو الكود
' Registry API functions Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" (ByVal _ hwndParent As Long, ByVal fRequest As Long, ByVal lpszDriver As String, _ ByVal lpszAttributes As String) As Long Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" _ (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _ ByVal samDesired As Long, ByRef phkResult As Long) As Long Private Declare Function RegQueryValueEx Lib "advapi32" Alias _ "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _ ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, _ ByRef lpcbData As Long) As Long Const REG_SZ = 1 Const KEY_ALL_ACCESS = &H2003F Const HKEY_CURRENT_USER = &H80000001 Public Const ODBC_ADD_DSN = 1 ' Add data source Public Const ODBC_REMOVE_DSN = 3 ' Delete data source Sub MakeDSN(ByVal sDSN As String, ByVal sDriver As String, _ ByVal sDBFile As String, ByVal lAction As Long) Dim tempVal As String Dim testdb As String Dim retVal As Long Dim hKey As Long Dim regValue As String Dim valueType As Long ' query the Registry to check whether the DSN is already installed ' open the key If RegOpenKeyEx(HKEY_CURRENT_USER, "Software\ODBC\ODBC.INI\" & sDSN, 0, _ KEY_ALL_ACCESS, hKey) = 0 Then ' zero means no error => Retrieve value of "DBQ" key regValue = String$(1024, 0) ' Allocate Variable Space If RegQueryValueEx(hKey, "DBQ", 0, valueType, regValue, _ Len(regValue)) = 0 Then ' zero means OK, so we can retrieve the value If valueType = REG_SZ Then testDB = Left$(regValue, InStr(regValue, vbNullChar) - 1) End If End If ' close the key RegCloseKey hKey End If ' Perform the action only if we're adding a DSN that doesn't exist ' or removing and existing DSN If (testDB = "" And lAction = ODBC_ADD_DSN) Or (testDB <> "" And lAction = _ ODBC_REMOVE_DSN) Then ' check that the file actually exists If Len(Dir$(sDBFile)) = 0 Then MsgBox "Database file doesn't exist!", vbOKOnly + vbCritical Exit Sub End If tempVal = "DSN=" & sDSN & vbNullChar & "DBQ=" & sDBFile & vbNullChar retVal = SQLConfigDataSource(0&, lAction, sDriver, tempVal) End If End Sub
لمزيد من المعلومات حول تقنية ال ODBC عليك بال MSDN
لك تحياتي
أسألكم الدعاء لأبي و أمي
أخي العزيز
شكرا جدا على رسائلك ولكني حاولت في الكود الذي بعثته إلى فلم أفلح فأين مثلا أكتب اسم الداتا بيز التي أريد عمل اتصال لها وأين اسم ملف الاتصال
أرسل لك ملفا مضغوطا وأرجو أن ترد علي بنفس المثال بعد تعديله
وتأكد أننا ندعو لك ولأمك وأبيك
وشكراً
السلام عليكم ورحمة الله وبركاته
أخي الكريم
دعك من الكود الذي أضفته لك من قبل
و اعتبره نسيا منسيا :D
جرب الملف المرفق و ياريت تخبرني النتيجه لأني أود ان اعرف هل سيعمل على جهاز آخر أم لا
ولي سؤال آخر لو سمحت
لماذا تريد إضافة DSN بالكود ؟
وشكرا لك
تم تعديل هذه المشاركة بواسطة بن حسن في 1 مارس 2005 في 10:27
أسألكم الدعاء لأبي و أمي
جزاك الله خيراً "هذا ما كنا نبغ" أما عن سؤالك
فأنا أعمل في مجا البرمجة وإن كنت مبتدء وليس من المعقول أن نذهب لنوم بتعريف قاعدة البيانات عند كل عميل وظننت أنه يجب أن يكون هناك كود لذلك وصاب ظني والحمد لله
على فكره يا أخي أنا أيضا أحفظ قصيدة لا تصالح جيداً
أهلا بك يا أخي الكريم
أنت اول واحد أجده يعرف تلك القصيدة مع أنني أراها علامه مميزة من علامات الشعر العربي
و انا (شاعر) بسعاده غامرة من تواصلكم و أسألكم الدعاء
أسألكم الدعاء لأبي و أمي
هذا الموضوع مغلق.