PDA

View Full Version : ایجاد چند کاربر برای بانک



hasankhani
چهارشنبه 16 فروردین 1385, 12:39 عصر
با سلام
من می خواهم به وسیله فرم های سیستم امکان تعریف کاربر جدید را داشته باشم.
البته در sql*plus این کار را بلدم ولی نمیدانم چطور این کار را در یک فرم انجام دهم .مثلا چطور می توان synonym برای جداولم به وسیله فرم ها ایجاد کنم.
خیلی متشکرم

hmm
سه شنبه 22 فروردین 1385, 11:21 صبح
برای ساخت sysnonym میتونی از دستور زیر استفاده کن


create public synonym synonym_name for Owner.table_name;

برای تعریف یوزر مشکلت دقیقا چیه؟

hasankhani
سه شنبه 22 فروردین 1385, 12:25 عصر
سلام
من نمی توانم داخل فرم هایم که با Developer6i می سازم امکان تعریف کاربر جدید را بنا به درخواستهای سازمان داشته باشم چون نمیدانم چطور می توان همان دستورات که داخل sqlplus می نویسی را داخل فرم هایم بنویسم و اجرا کنم
اگر امکان دارد یک تکه کد که بتواند داخل فرم ها برای دکمه ها قرارداد و کاربر ایجاد کند را برایم بنویسید
خیلی خیلی ممنون

systemadmin
سه شنبه 29 فروردین 1385, 07:44 صبح
سلام
امکان استفاده از کدهای ایجاد کاربر sqlplus در داخل فرم ها نیست . چون داخل فرمها شما از دستور create user ... باید استفاده کنید و این دستور را در دل یک تریگر , تابع و یا زیر برنامه قرار دهید که این حالت در برنامه نویسی اوراکل اجازه داده نمی شود . دو پیشنهاد میکنم . اول اینکه در داخل دیتابیس دنبال پکیجی بگردی که اوراکل به کمک آن در حین ایجاد کاربر جدید در جداول دیتا دیکشنری عملیات مربوطه را ثبت می کند شاید بتوانی از این پکیج در داخل و روالهای آن در داخل فرم استفاده کنید . راه حل دوم و عملی این کار این است که شما جداولی برای نگهداری کاربران سیستم آن سازمان و حقوق و سطح دسترسی آنها ایجاد کنید و در هر بار که کاربر جدیدی ایجاد می کنید این جداول را هم بهنگام سازی کنید.

majid_afra222
سه شنبه 29 فروردین 1385, 13:07 عصر
سلام
جناب systemadmin عزیز، در Forms اوراکل می تونید با استفاده از رویه FORMS_DDL دستورات DML و DDL رو اجرا کنید.
ترکیب نوشتاری اونهم به شکل زیر هستش :


FORMS_DDL (statement);

برای بررسی موفقیت آمیز بودن اجرای دستور هم از خصوصویت FORM_SUCCESS استفاده می کنید.
برای مثال :


FORMS_DDL (‘CREATE table temp (n_col number)‘);
IF not FORM_SUCCESS THEN
MESSAGE (‘Table creation failed.‘);
RAISE form_trigger_failure;
END IF;


لطفا برای مسائلی که در مورد پاسخ اونها مطمئن نیستید، بصورت قاطع اظهار نظر نکنید، ممنون.

hasankhani
چهارشنبه 30 فروردین 1385, 07:55 صبح
با سلام
از راهنمایی شما خیلی ممنون
کمک بزرگی بود . لطفا اگر امکان دارد نحوه استفاده از
text item
را در این دستور برایم توضیح دهید یعنی در قسمتی که باید نام کاربر را بنویسم از یک
که در روی فرم قراردارد استفاده کنمtext item
باز هم از شما دوستان متشکرم

hasankhani
چهارشنبه 30 فروردین 1385, 07:56 صبح
با سلام
از راهنمایی شما خیلی ممنون
کمک بزرگی بود . لطفا اگر امکان دارد نحوه استفاده از
text item
را در این دستور برایم توضیح دهید یعنی در قسمتی که باید نام کاربر را بنویسم از یک
که در روی فرم قراردارد استفاده کنمtext item
باز هم از شما دوستان متشکرم

hasankhani
یک شنبه 10 اردیبهشت 1385, 08:11 صبح
سلام
کسی نیست به من کمک کنه
من نمی توانم از یک کاربر به کاربر دیگری سوئیچ کنم
لطفا من را راهنمایی کنید
مرسی

majid_afra222
یک شنبه 10 اردیبهشت 1385, 09:10 صبح
سلام
آقای حسن خانی عزیز، بهتره یه بار یه کتاب در مورد Forms اوراکل بخونی، یا اینکه سر کلاس بری و یاد بگیری، چون مثل بقیه محیطهای توسعه که ما با اونها کار می کنیم نیست، و خصوصیات خاص خودش رو داره.
اگه وقت کردم تست می کنم برات جواب رو میفرستم (تا شب جوابش رو برات میفرستم).

hasankhani
دوشنبه 11 اردیبهشت 1385, 07:54 صبح
سلام
از لطف شما متشکرم .
من کتاب های زیادی را دیدم ولی این مطالب را پیدا نکردم
اگر کتاب خاصی هست لطفا آن را به من معرفی کنید
متشکرم

majid_afra222
سه شنبه 12 اردیبهشت 1385, 15:21 عصر
سلام حسن خانی عزیز
شرمنده دیر شده، این مودم ما رفته بود مسافرت نشد جوابو برات ارسال کنم.
خوب راه حلی که من استفاده کردم :
1- در تریگر ON-LOGON در سطح فرم کد زیر رو می نویسی :


DECLARE
connected BOOLEAN := FALSE;
tries NUMBER := 3;
un VARCHAR2(30);
pw VARCHAR2(30);
cs VARCHAR2(30);
BEGIN
SET_APPLICATION_PROPERTY(CURSOR_STYLE, 'DEFAULT');
WHILE connected = FALSE and tries > 0 LOOP
LOGON_SCREEN;
un := GET_APPLICATION_PROPERTY( USERNAME );
pw := GET_APPLICATION_PROPERTY( PASSWORD );
cs := GET_APPLICATION_PROPERTY( CONNECT_STRING );
LOGON( un, pw || '@' || cs, TRUE );
IF FORM_SUCCESS THEN
connected := TRUE;
END IF;
tries := tries - 1;
END LOOP;
IF NOT CONNECTED THEN
MESSAGE('Too many tries!');
RAISE FORM_TRIGGER_FAILURE;
END IF;
END;



2- یه BUTTON روی یه CANVAS میزاری یا هر جای دیگه و تو رویداد WHEN-BUTTON-PRESSED اون کد زیر رو می نویسی :


BEGIN
LOGOUT;
LOGON('', '', TRUE );
EXCEPTION
WHEN OTHERS THEN
LOGON('', '', TRUE );
END;


خوب کاربر در زمان ورود به فرم برای اولین بار باید اطلاعات ورودش رو بده و بعد وارد میشه، دکمه رو که زد LOGOUT میکنه و دوباره مجبوره LOGON کنه.
امیدوارم بدردت بخوره.
البته میتونی بهتر و کاملترش کنی.

majid_afra222
سه شنبه 12 اردیبهشت 1385, 15:22 عصر
سلام
در ضمن اسم کتابهایی رو که خوندی بگو.

hasankhani
چهارشنبه 13 اردیبهشت 1385, 12:50 عصر
سلام
نمیدونم چطور از شما تشکر کنم
واقعا من را شرمنده کردید.
من کتابهای اوراسل را می خونم . ولی معمولا چیزهایی را که می خواهم پیدا نمی کنم
باز هم ازشما تشکر می کنم .

hasankhani
شنبه 16 اردیبهشت 1385, 08:43 صبح
با سلام خدمت شما دوست گرامی
لطفا اگر امکان به این دستورات نگاه کرده و اشکالات آن را برایم رفع کنید.متشکرم
من در این دستورات می خواهم به یک کاربر که قبلا ایجاد شده دسترسی های لازم را برای دیدن جداول کاربر اصلی بدهم.
ابتدا چون با کاربر اصلی متصل هستم باید تغییر کاربری داده و با کاربر دوم که نام و رمز آن را از روی فرم می خوانم (user - pass) متصل شوم.(که این کار با هیچ کدام از دستورا ت زیر انجام نمی شود)؟؟؟؟؟؟؟؟؟؟؟؟؟؟
در ضمن برای ایجاد (synonym ) هم مشکل دارم و نمی توانم از دستور ( form_ddl) استفاده کنم و همچنین برای ایجاد (grant ) آیا روش خاصی دارد؟؟؟؟؟؟؟؟؟؟؟؟





begin

--forms_ddl('connect '||:user||'/'||:pass||'@rassa');
logout;
LOGON( :user, :pass || '@' || 'rassa', TRUE );
if not form_success then
message('Çã˜Çä ÈÑÞÑÇÑí ÇÊÕÇá æÌæÏ äÏÇÑÏ');
message('Çã˜Çä ÈÑÞÑÇÑí ÇÊÕÇá æÌæÏ äÏÇÑÏ');

else
message('ÇÊÕÇá ÈÑÞÑÇÑ ÔÏ');
message('ÇÊÕÇá ÈÑÞÑÇÑ ÔÏ');
end if;


forms_ddl('create synonym peymankar for mehdi.peymankars;');

if not form_success then
message(' not synonym');
message('not synonym');
else
message(' synonym');
message(' synonym');
end if;

forms_ddl('connect mehdi/mehdi@rassa');

if not form_success then
message('Çã˜Çä ÈÑÞÑÇÑí ÇÊÕÇá ÈÇ ÓÑæÑ æÌæÏ äÏÇÑÏ');
message('Çã˜Çä ÈÑÞÑÇÑí ÇÊÕÇá ÈÇ ÓÑæÑ æÌæÏ äÏÇÑÏ');

else

message('ÇÊÕÇá Èå ÓÑæÑ ÈÑÞÑÇÑ ÔÏ');
message('ÇÊÕÇá Èå ÓÑæÑ ÈÑÞÑÇÑ ÔÏ');
end if;

forms_ddl('grant all on peymankars to '||:user||'with grant option');
if not form_success then
message('Çã˜Çä ÇíÌÇÏ ÏÓÊÑÓí åÇ æÌæÏ äÏÇÑÏ');
message('Çã˜Çä ÇíÌÇÏ ÏÓÊÑÓí åÇ æÌæÏ äÏÇÑÏ');
else
message('ÏÓÊÑÓí åÇí áÇÒã Èå Çíä ˜ÇÑÈÑ ÏÇÏå ÔÏ');
message('ÏÓÊÑÓí åÇí áÇÒã Èå Çíä ˜ÇÑÈÑ ÏÇÏå ÔÏ');
end if;

end;

majid_afra222
دوشنبه 18 اردیبهشت 1385, 15:18 عصر
سلام
اول - اینکه کدها رو تو تگهای مربوطه قرا بده که خوانا باشن
دوم - اینکه پسر خوب دستور FORMS_DDL رو یه بار تو Help خود برنامه میدیدی بعد خودت متوجه استباهت میشدی، عبارات موجود در رویه FORMS_DDL نباید حاوی ; باشه.
عین عبارت از Help خود Forms Developer یه نگاهی بکن :


Usage Notes
....
If you use FORMS_DDL to execute a single DML or DDL statement:
Omit the trailing semicolon to avoid an invalid character error.
....

hasankhani
پنج شنبه 21 اردیبهشت 1385, 08:30 صبح
با سلام
از راهنمایی شما متشکرم
راستی نگفتید من برای یادگیری این موارد از کدام کتاب استفاده کنم.
متشکرم

majid_afra222
پنج شنبه 21 اردیبهشت 1385, 10:13 صبح
سلام
اول اینکه یه کلاس خوب با یه استاد خوب پیدا کن، بهترین کار یادگیری مفاهیم و اصول هستش.
بعد کتابهای خود اوراکل رو مطالعه کن.
بقیه اش با تجربه و کار خود به خود و کم کم بدست میآد.