PDA

View Full Version : تشخیص جنس فیلد



محمد رضا بهبودی
چهارشنبه 12 آبان 1400, 13:37 عصر
با سلام و احترام خدمت همه دوستان گرامی
با چه کدی می شود مشخص کرد که فلان فیلد در فلان جدول از چه جنسی است به طور مثال فیلد 1 از جدول a از جنس عددی است یا متنی ؟

محمد رضا بهبودی
پنج شنبه 13 آبان 1400, 08:05 صبح
با سلام و احترام
اساتید محترم لطفا راهنمائی فرمایید

mazoolagh
پنج شنبه 13 آبان 1400, 08:28 صبح
سلام و روز خوش
چون شما خودتون به کدنویسی مسلط هستین فکر نمیکنم نیازی به نمونه کد داشته باشین،
با این وجود اگر نیاز به راهنمایی بیشتر هست خبر بدین.
کافی هست از tabledef جدول مورد نظر فیلدهای اون رو بیرون بکشین و type فیلد رو بررسی کنین.

لیست field type ها رو در لینک زیر میتونین ببینین:
https://docs.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/field-type-property-dao

محمد رضا بهبودی
پنج شنبه 13 آبان 1400, 11:01 صبح
ممنون از پاسخ جنابعالی
اگر موفق نشدم ، مجددا مزاحم شما می شوم

محمد رضا بهبودی
پنج شنبه 13 آبان 1400, 12:32 عصر
استاد گرامی
متاسفانه نتوانستم متوجه شوم
من می خواهم فیلدهای جدولی را که در برنامه موجود است کنترل کنم وببینم از چه جنسی هستند مثلا پیام بدهد که فلان فیلد از فلان جدول از جنس متنی است
استاد گرامی
یک سوال دیگه هم داشتم
در فایل پیوست می خواهم وقتی روی یکی از گزینه های لیست جدول کلیک می کنم در بخش لیست فیلدها به جای نام فیلد کپشن فیلد نمایش داده شود . لطفا در صورت امکان راهنمائی بفرمایید . ممنون

محمد رضا بهبودی
شنبه 15 آبان 1400, 08:03 صبح
با سلام و صبح بخیر
اساتید محترم
منتظر راهنمائی شما هستم . ممنون

mazoolagh
شنبه 15 آبان 1400, 10:56 صبح
سلام و روز خوش
بهتر بود بجای پیوست برنامه فقط کد رو اینجا میگذاشتین و مشکل رو روی اون توضیح میدادین.

هر TABLEDEFS یک COLLECTION (مجموعه) از FIELDS داره و هر عضو این مجموعه خودش یک سری از ویژگیها (PROPERTIES) و مشخصه ها (ATTRIBUTES) داره.
شما باید FIELD.TYPE رو بررسی کنین (که یک مقدار INTEGER هست) و با توجه به لینکی پست 3 گذاشتم نوع فیلد رو ببینین، بعنوان نمونه TYPE یک فیلد SHORT TEXT برابر 10 هست.

کد زیر رو در یک ماجول بریزین و اجرا کنین روش کار دستتون میاد:
DIM TDS AS TABLEDEFS
SET TDS=CURRENTDB.TABLEDEFS
DIM TD AS TABLEDEF
SET TD=TDS("TableName")
DIM FLD AS FIELD
FOR EACH FLD IN TD.FIELDS
DEBUG.PRINT FLD.NAME, FLD.TYPE
NEXT
SET TDS=NOTHING
SET TD=NOTHING

mazoolagh
شنبه 15 آبان 1400, 11:06 صبح
میتونین این لیست رو در یک جدول اکسس بریزین و با DLOOKUP نوع فیلد رو بگیرین و یا یک تابع بنویسین و با SELECT CASE نوع فیلد رو پیدا کنین.


Constant Value Description
-------- ----- -----------
dbBigInt 16 Big Integer
dbBinary 9 Binary
dbBoolean 1 Boolean
dbByte 2 Byte
dbChar 18 Char
dbCurrency 5 Currency
dbDate 8 Date/Time
dbDecimal 20 Decimal
dbDouble 7 Double
dbFloat 21 Float
dbGUID 15 GUID
dbInteger 3 Integer
dbLong 4 Long
dbLongBinary 11 Long Binary (OLE Object)
dbMemo 12 Memo
dbNumeric 19 Numeric
dbSingle 6 Single
dbText 10 Text
dbTime 22 Time
dbTimeStamp 23 Time Stamp
dbVarBinary 17 VarBinary

mazoolagh
شنبه 15 آبان 1400, 11:07 صبح
فقط چند مورد هست که با دقت در لیست بالا متوجه میشین نیاز به کدنویسی بیشتری داره.
میگذارم به عهده خودتون تا پیداش کنین.

محمد رضا بهبودی
شنبه 15 آبان 1400, 11:24 صبح
استاد گرامی
ممنون از زحمت چنابعالی
مثل همیشه دقیق و کامل
فقط لطفا در صورت امکان قسمت دوم سوال من را هم ملاحضه بفرمایید . ممنون

mazoolagh
دوشنبه 17 آبان 1400, 12:58 عصر
جناب بهبودی،
لطفا همون بخش از کد رو که مشکل دارین اینجا در تگ code یا vb پیوست کنین.
اگر هم به اسکرین شات نیاز هست اون رو هم پیوست کنین.

اینجوری سریعتر پاسخ میگیرین تا این که یک نفر فرصت کنه برنامه شما رو بررسی کنه و خودش بفهمه کجا مشکل داره!