الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

DSN file

مغلق
بدأه samehnet في 26 فبراير 2005 · 9 رد · 843 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أسأل عن كيفية إنشاء ملف DSN في ODBC والخاص بالاتصال بقاعدة البيانات عن طريق الكود ، كيف يمكنني إنشاء هذا الملف عن طريق الكود مباشرة

#2

-09

الاخ العزيز

أعتقد انة ليس هناك كود صريح لعمل ملف ال dsn و لكن ما اعرف انك بالطبع يمكن عمل الملف من خلال الـ adodc و سوف ارفق لك بعد المعلومات التى يمكن ان نقوم من خلالها بعمل ملف الـ dns

1- المسار هو :

C:\Program Files\Common Files\ODBC\Data Sources

2- المسار فى الرجيسترى : ( و التى يمكن من خلالها بعمل الملف )

HKEY_LOCAL_MACHINE\Software\ODBC\

و يمكن من خلال الطريقة الثانية من عمل الملف

وشكرا

ارجوا مساعدتى للعمل كمبرمج اوراكل باى شركة خبرتى 1 سنه و ربنا الموفق

خبرى 6 سنوات فى فيجوال بيزك 6و ASP

#3

أرجو المعذرةيا أخي إن كنت لم أستوعب الموضوع ربما لقصور في معلوماتي أنا

ولكن كيف سيتم إنشاء هذا الملف ممكن مثال ، ثم بعدها خصائص هذا الملف وكيفية اتصال هذا ال DSN بقاعدة البيانات

ومعذرة إن كنت أثقلت عليك

#4

إنتظر مني رد وافي قريبا جدا بإذن الله

أسألكم الدعاء لأبي و أمي

#5

السلام عليكم ورحمة الله وبركاته

يمكنك يا اخي إنشاء 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

لك تحياتي

أسألكم الدعاء لأبي و أمي

#6

أخي العزيز

شكرا جدا على رسائلك ولكني حاولت في الكود الذي بعثته إلى فلم أفلح فأين مثلا أكتب اسم الداتا بيز التي أريد عمل اتصال لها وأين اسم ملف الاتصال

أرسل لك ملفا مضغوطا وأرجو أن ترد علي بنفس المثال بعد تعديله

وتأكد أننا ندعو لك ولأمك وأبيك

وشكراً

#7

أخي العزيز

شكرا جدا على رسائلك ولكني حاولت في الكود الذي بعثته إلى فلم أفلح فأين مثلا أكتب اسم الداتا بيز التي أريد عمل اتصال لها وأين اسم ملف الاتصال

أرسل لك ملفا مضغوطا وأرجو أن ترد علي بنفس المثال بعد تعديله

وتأكد أننا ندعو لك ولأمك وأبيك

وشكراً

dsn.rar

#8

السلام عليكم ورحمة الله وبركاته

أخي الكريم

دعك من الكود الذي أضفته لك من قبل

و اعتبره نسيا منسيا :D

جرب الملف المرفق و ياريت تخبرني النتيجه لأني أود ان اعرف هل سيعمل على جهاز آخر أم لا

ولي سؤال آخر لو سمحت

لماذا تريد إضافة DSN بالكود ؟

وشكرا لك

dsn.zip

تم تعديل هذه المشاركة بواسطة بن حسن في 1 مارس 2005 في 10:27

أسألكم الدعاء لأبي و أمي

#9

جزاك الله خيراً "هذا ما كنا نبغ" أما عن سؤالك

فأنا أعمل في مجا البرمجة وإن كنت مبتدء وليس من المعقول أن نذهب لنوم بتعريف قاعدة البيانات عند كل عميل وظننت أنه يجب أن يكون هناك كود لذلك وصاب ظني والحمد لله

على فكره يا أخي أنا أيضا أحفظ قصيدة لا تصالح جيداً

#10

أهلا بك يا أخي الكريم

أنت اول واحد أجده يعرف تلك القصيدة مع أنني أراها علامه مميزة من علامات الشعر العربي

و انا (شاعر) بسعاده غامرة من تواصلكم و أسألكم الدعاء

أسألكم الدعاء لأبي و أمي

هذا الموضوع مغلق.

مواضيع مشابهة