PDA

View Full Version : سوال: تغییر نام یه عالمه جدول



wolfstander
دوشنبه 09 مرداد 1391, 08:06 صبح
سلام
مدتی نبودم متاسفانه نمردم که شما راحت بشید
الان باز اومدم
:لبخند:
یه تاپیک دیدم که دوستان لطف کردن و توش نحوه تغییر نام جداول رو راهنمایی کردن
http://barnamenevis.org/showthread.php?318173-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D9%86%D8%A7%D9%85-%D8%AC%D8%AF%D9%88%D9%84&highlight=%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1+%D8%A7%D8 %B3%D9%85+%D8%AC%D8%AF%D9%88%D9%84
حالا مشکلی که من دارم اینه
موقعی که من میخوام جداول SQL رو لینک کنم به اکسس، نامرد میاد و اول اسم همه جداول DBO_ میذاره
من میخوام ببینم راهی داره که بعنوان مثال اول اسم همه جداولم بره بشینه تو یه جدول
بعدش دونه به دونه خونده بشه و کد روش اجرا بشه که این DBO_ رو از اولش برداره؟
دلیلش هم اینه که میخوام از کدها و VIEW های خود اس کیو ال استفاده کنم
ولی مجبورم که DBO_ های اول رو دستی پاک کنم تا بهم اجازه بده
ممنون میشم اگه راهنماییم کنید

RESMAILY
دوشنبه 09 مرداد 1391, 09:33 صبح
به نام خدا
با سلام به بهرنگ عزيز. من يك چيزي دارم برايت مي گذارم. شايد بشود با اعمال تغييرات از آن استفاده نمايي. مي بخشي چون عجله بود كد را بصورت دلخواه نياوردم. اين تابع نام يك جدول خاص را پيدا مي كند. طبعا مي شود با يك حلقه و غيره كارهاي ديگري هم انجام داد.
گرچه احتمال مي دهم خودت هم اين راه حل را مي دانستي. حالا يا يادت نبود يا من نفهميدم مشكل چيست.

Function AllTable_s(strName As String, Optional strFrom As String, Optional spwd As String) As Boolean

If strFrom = "" Then
Set dba = CurrentDb
GoTo 5
End If
Set dba = OpenDatabase(strFrom, False, False, "; pwd=spwd")
5:
For Each TableDef In dba.TableDefs
strTblName = TableDef.Name
RenameTable "strTblName","Table1"
Next
AllTable_s = True
Set dba = Nothing
End Function
ضمنا يك تابع دروني هم AllTables در آكسس هست كه براي اين قبيل كارها خوب است.

wolfstander
دوشنبه 09 مرداد 1391, 12:41 عصر
سلام به همه دوستان
یک راه حل ساده و بدون مشکل
کار هم میکنه
تست هم شده


Dim dbCurr As DAO.Database
Dim tdfCurr As DAO.TableDef

Set dbCurr = CurrentDb()
For Each tdfCurr In dbCurr.TableDefs
If Left$(tdfCurr.Name, 4) = "dbo_" Then
tdfCurr.Name = Mid$(tdfCurr.Name, 5)
End If
Next tdfCurr


این کد را در یک فرم و در یک کامند باتن بگذارید، مشکل حل میشود
بعد از اجرای کد، یکبار باید برنامه را ببندید و دوباره باز کنید
هرچند دوست خوبم RESMAILY راه حل خوبی را ارائه کرده، ولی این راه حلی که من پیدا کردم هم حجم کمتری دارد و هم اینکه همه کارها را خودش انجام میدهد و نیازی به کدنویسی دیگر ندارد
ایده رو که دوستان بدهند، بقیه اش کاری نداره
دوست خوبم RESMAILY ایده رو داد، جایی که خود من زیاد قدرت ندارم. از ایده اش ببینید که چه راه حلی پیدا شد
از بس تو اکسس و sql اینها رو پاک کردم خسته شدم
خداوند همه رو به راه راست هدایت کند
من رو بیشتر