یادداشت های برنامه نویس

تجربیات و سورس کدهای رایگان در زمینه برنامه نویسی دلفی و دیتابیس ها

یادداشت های برنامه نویس

تجربیات و سورس کدهای رایگان در زمینه برنامه نویسی دلفی و دیتابیس ها

آموزش Mysql

با سلام

دستور Case

 فکر کنم case همه میشناسند و تا اونجایی که من خبر دارم در اکثر زبانهای برنامه نویسی هستش!

caseواقعا کاربردش زیاده

CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] ...
    [ELSE statement_list]
END CASE
مثال
یک فایل به نام Stu داریم که به جای مقطع تحصیلی عدد گذاشته ایم
ابتدایی = 0
راهنمایی =1
دبیرستان = 2

و...CASE tbl.stu
WHEN '0' THEN 'ابتدایی'
WHEN '1' THEN 'راهنمایی'
WHEN '2' THEN 'دبیرستان'
....

END AS 'مقطع تحصیلی'
یا
CASE tbl.stu
WHEN '0' THEN 'ابتدایی'
WHEN '1' THEN 'راهنمایی'
WHEN '2' THEN 'دبیرستان'
ELSE
'دیگر مقاطع'

END AS 'مقطع تحصیلی'

آموزش Mysql

سلام

از این به بعد سعی می کنم هر چند وقت چند تا از دستورات Mysql به صورت نا منظم براتون بزارم


قفل کردن جدول برای یک عمل خاص

شما میتونید جدول های دیتابیستون محدود کنید

برای مثال در یک دیتابیس 2 تا جدول دارید t1,t2 میتونید کاری کنید که فقط بشه از جدول t1 کاربر بخونه و فقط در جدول t2 بتونه insert یا درج کنه

Lock tables t1 read;

lock tables t2 write;

این دستور زمانی به کمک شما میاد برای مثال می خواهید اطلاعاتتون export کنید که نیاز هست کاربر داده ای را درج نکنه یا زمان backup گرفتن یا بروز آوری دیتابیس.

برای برگرداندن به حالت اول

unlock tables;

--------------------------------------------------------------------------------------------------------

صافکاری جدول

TRUNCATE Table 

تمام دیتاهای جدول پاک می کنه

معادل دستور (البته با سرعت وحشتناک زیاد)

Delete from table

---------------------------------------------------------------------------------------------------------

گرفتن خروجی از جدول

LOCK TABLES tblname READ;
SELECT *
INTO OUTFILE 'addres File.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM tblname;
UNLOCK TABLES;

این هم یک خروجی به فایل CSv

سوالی بود در خدومتیم

شیعه یعنی...

 

ای جوانمردان! جوانمردی چه شد؟

شیوة رندی و شب‌گردی چه شد؟

بندگی تنها نماز و روزه نیست

آب تنها در میان کوزه نیست

کوزه را پر کن ز آب معرفت

تا در او جوشد شراب معرفت

حرف حق را از محقق گوش کن

وز لب قرآن ناطق گوش کن

بعداز آن بشنو ز «نظم أمرکم»

تا شوی آگاه بر اسرار خم

خم تو را سرشار مستی می‌کند

بی‌نیاز از هرچه هستی می‌کند

هرچه هستی، جان مولا مرد باش

گر قلندر نیستی، شب‌گرد باش

….

شیعه یعنی شرح منظوم طلب

از حجاز و کوفه تا شام و حلب

شیعه یعنی یک بیابان بی‌کسی

غربت صدساله، بی دلواپسی

شیعه یعنی صد بیابان جستجو

شیعه یعنی هجرت از من تا به او

شیعه یعنی دست بیعت با غدیر

بارش ابر کرامت بر کویر

شیعه یعنی عدل و احسان و وقار

شیعه یعنی انحنای ذوالفقار

 

 

مرحوم آغاسی 

 

 

 

شهادت امام هادی(ع) بر مسلمین جهان تسلیت باد 

تعیین گروهی از رکوردهای جدول

به سه روش می‌توان گروهی از رکوردها را در جدول تعیین کرد که عبارت‌اند از:

1ـ استفاده از خاصیت Filter

2ـ استفاده از رویداد OnFilterRecord

3ـ استفاده از متد SetRange

 

استفاده از خاصیت Filter

در این روش مراحل ایجاد فیلتر به صورت زیر است:

1ـ خاصیت Filtered را به مقدار True تغییر دهید.

2ـ مقداری را در خاصیت Filter قرار دهید که باید بر اساس آن فیلتر انجام شود.

به عنوان مثال، دستورات زیر را در نظر بگیرید:

Table1.Filtered := True;

Table1.Filter := ‘Fname = ‘Saeed’’ ;

این دستورات، رکوردهایی را نشان می‌دهد که نام آنها saeed باشد.

در خاصیت Filter می‌توان از عملگرهای not , or , and استفاده نمود. به عنوان مثال، دستورات زیر را در نظر بگیرید:

Table1.Filter := ‘Age > 20 and Age 40’ ;

Table1.Filtered := True ;

این دستورات، تمام رکوردهایی را نشان می‌دهد که سن  آنها بین 20 تا 40 باشد.

مجموعه دستورات زیر، تمام رکوردهای جدول را نمایش می‌دهد.

Table1.Filter := “ ;

Table1.Filtered := True ;

یا

Table1.Filtered :=False;

اگر مقدار خاصیت Filter خالی و مقدار خاصیت Filtered برابر با True باشد، تمام رکوردهای جدول را نمایش می‌دهد. از این روش می‌توان برای حذف فیلترهای قبلی استفاده کرد.

 

استفاده از رویداد OnFilterRecord

روش دیگر ایجاد فیلتر استفاده از رویداد OnFilterRecord است. این رویداد، برای هر یک از رکوردهای جدول فراخوانی می‌شود. این رویداد، برای ایجاد فیلتر از پارامتر

Accept استفاده می‌کند و به صورت زیر به کار می‌رود:

; (مقدار فیلتر) Accept :=

این دستور، در پارامتر Accept هر رکوردی که در شرط فیلتر صدق کند، مقدار True را قرار می‌دهد. به عنوان مثال، برای ایجاد فیلتر با این روش، رویداد OnFilterRecord جدول را دوبار کلیک کرده کد زیر را تایپ کنید:

Accept := (Table1.FieldByName ('Code').Values = '7’) ;

 این دستور، رکوردی را نمایش می‌دهد که کد دانشجویی آن ‘7’ باشد. کد کامل این برنامه به صورت زیر است:

procedure Tform1.TableFilterRecord (DataSet:TdataSet; var Accept:Boolean);

begin

     Accept := (Table1.FieldByName ('code').Values = '7’);

 

متد FindFirst : با استفاده از این متد می‌توان اولین رکوردی را پیدا کرد که شرایط فیلتر را داشته باشد و به صورت زیر استفاده می‌شود:

.FindFirst; نام عنصر

در این متد، اگر اشاره‌گر، به اولین رکوردی انتقال یابد که دارای شرایط فیلتر باشد، مقدار True و گرنه مقدار False را برمی‌گرداند.

 

متد FindNext: با استفاده از این متد می‌توان رکورد بعدی را تعیین کرد که دارای شرایط فیلتر است و کاربرد آن به صورت زیر است:

.FindNext ; نام عنصر

اگر اشاره‌گر به رکورد بعدی که دارای شرایط فیلتر است، منتقل شود، این متد مقدار True و گرنه مقدار False را برمی‌گرداند.

 

متد FindLast : این متد، برای پیدا کردن آخرین رکوردی به کار می‌رود که شرایط فیلتر را داشته باشد، و به صورت زیر استفاده می‌شود:

.FindLast ; نام عنصر

اگر اشاره‌گر، به آخرین رکوردی انتقال یابد که دارای شرایط فیلتر باشد، این متد مقدار True و گرنه مقدار False را برمی‌گرداند.

 

متد FindPrior : این متد، اشاره‌گر را به رکورد قبلی انتقال می‌دهد که دارای شرایط فیلتر باشد، و به صورت زیر به کار می‌رود:

.FindPiror ; نام عنصر

اگر اشاره‌گر، به رکورد قبلی که دارای شرایط فیلتر باشد، منتقل گردد این متد مقدار True و گرنه مقدار False را برمی‌گرداند.

 

متد SetRange : با استفاده از این متد می‌توان گروهی (محدوده‌ای) از رکوردها را در جدول تعیین کرد و از آنها استفاده نمود. پس از تعیین محدوده‌ای از رکوردها، می‌توان فرض کرد که بقیه رکوردها وجود ندارند. متد SetRange به صورت زیر به کار می‌رود:

‘ ; نام فیلد.IndexName := ' نام عنصر

; ([مقدار 2] , [مقدار 1]) .SetRange نام عنصر

به عنوان مثال، دستورات زیر را در نظر بگیرید:

Stu.IndexName := 'Fname';

stu.SetRange (['Saeed']) ;

در این دستورات، رکوردهایی در جدول ظاهر می‌گردند که نام آنها ‘saeed’ باشد. مجموعه دستورات زیر، رکوردهایی را که حقوق آنها بین 20 تا 40 ریال باشد، نمایش می‌دهد.

Stu.IndexName := 'Age' ;

Stu.SetRange ([20] , [40]);

 

متد CancelRange : با استفاده از متد CancelRange می‌توان محدوده در نظر گرفته برای جدول را حذف نمود و تمام رکوردهای جدول را نمایش داد. کاربرد متد CancelRange به صورت زیر است:

.CancelRange ; نام عنصر

به عنوان مثال، دستور زیر را در نظر بگیرید:

Stu.CancelRange;

این دستور، محدوده‌ای را حذف می‌کند که توسط SetRange قبلی ایجاد شد و سبب نمایش تمام رکوردهای بانک اطلاعاتی می‌شود.

 

متد SetRangeStart : با استفاده از این متد می‌توان بازه شروع فیلتر قبلی را حذف نمود و بازه شروع فیلتر جدیدی را تعریف کرد. این متد به صورت زیر به کار می‌رود:

.SetRangeStart; نام عنصر

 ;مقدار بازه شروع فیلتر := نوع فیلد .as (نام فیلد) FieldByName . نام عنصر

متد SetRangeEnd: این متد، بازه پایانی فیلتر قبلی را حذف کرده بازه پایانی فیلتر جدیدی را تعریف می‌کند و به صورت زیر به کار می‌رود:

.SetRangeEnd ; نام عنصر

; مقدار بازه پایانی فیلتر := نوع فیلد .as (نام فیلد) FieldByName . نام عنصر

 

متد EditRangeStart : با استفاده از این متد می‌توان بازه شروع فیلتر قبلی را تعویض کرد و بازه شروع جدیدی را تعریف نمود و به صورت زیر به کار می‌رود:

.EditRangeStart; نام عنصر

 ;بازه شروع فیلتر := نوع فیلد .as (نام فیلد) FieldByName . نام عنصر

 

متد EditRangeEnd: این متد برای تعویض بازه پایانی فیلد موجود به کار می‌رود و به صورت زیر مورد استفاده قرار می‌گیرد: 

.EditRangeEnd ; نام عنصر

; بازه پایانی فیلتر جدید := نوع فیلد .as (نام فیلد) FieldByName . نام عنصر

به عنوان مثال، دستورات زیر را در نظر بگیرید:

with Table1 do

   begin

       EditRangeStart;

       FieldByName ('Age').asInteger := StrToInt (Edit1.Text);

       EditRangeEnd;

       FieldByName ('Age').asInteger := StrToInt (Edit2.Text); 

       ApplyRange;

End;

این دستورات کلیه رکوردهایی را نمایش می‌دهد که سن  آنها بین مقادیر عنصر Edit2 , Edit1 باشد.

متد ApplyRange : این متد، فیلتر را با استفاده از بازه شروع فیلتر و بازه پایان فیلتر بر روی جدول اجرا می‌کند و به صورت زیر استفاده می‌شود:

.ApplyRange ; نام عنصر

به عنوان مثال، دستورات زیر را در نظر بگیرید:

with Table1 do

     Active := True;

     SetRangeStart;

     FieldByName ('Age').asInteger := 20;

     SetRangeEnd;

     FieldByName ('Age').asInteger := 40;

     ApplyRange;

End;

این دستورات، رکوردهایی از جدول را نمایش می‌دهد که سنشان در بازه 20 تا 40 باشد.


 

نمونه کد کار با system restor

در کد زیر کار با system Restore point ویندوز را یاد خواهید گرفت. دسترسی به اخرین تغییرات در ویندوز

نکته:در ویندوز 7 Run as Admin… فراموش نشود

program WMIShowRestorePoints;

 ///www.delphiplus.ir
 ///  wwww.lear4u.blogsky.com
{$APPTYPE CONSOLE}

uses
  SysUtils
  ,ActiveX
  ,ComObj
  ,Variants;

function RestorePointTypeToStr(RestorePointType:Integer):string;
begin
     case  RestorePointType of
      0  : Result:='APPLICATION_INSTALL';
      1  : Result:='APPLICATION_UNINSTALL';
      13 : Result:='CANCELLED_OPERATION';
      10 : Result:='DEVICE_DRIVER_INSTALL';
      12 : Result:='MODIFY_SETTINGS'
      else
      Result:='Unknow';
     end;
end;

function EventTypeToStr(EventType:integer) : string;
begin
     case  EventType of
      102  : Result:='BEGIN_NESTED_SYSTEM_CHANGE';
      100  : Result:='BEGIN_SYSTEM_CHANGE';
      103  : Result:='END_NESTED_SYSTEM_CHANGE';
      101  : Result:='END_SYSTEM_CHANGE'
      else
      Result:='Unknow';
     end;
end;

function WMITimeToStr(WMITime:string) : string; //convert to dd/mm/yyyy hh:mm:ss
begin
    //20020710113047.000000420-000 example    source <a href="http://technet.microsoft.com/en-us/library/ee156576.aspx">http://technet.microsoft.com/en-us/library/ee156576.aspx</a>
    result:=Format('%s/%s/%s %s:%s:%s',[copy(WMITime,7,2),copy(WMITime,5,2),copy(WMITime,1,4),copy(WMITime,9,2),copy(WMITime,11,2),copy(WMITime,13,2)]);
end;

procedure GetRestorePoints;
var
  objWMIService : OLEVariant;
  colItems      : OLEVariant;
  colItem       : OLEVariant;
  oEnum         : IEnumvariant;
  iValue        : LongWord;

  User          : OLEVariant;
  Domain        : OLEVariant;

  function GetWMIObject(const objectName: String): IDispatch;
  var
    chEaten: Integer;
    BindCtx: IBindCtx;
      Moniker: IMoniker;
  begin
    OleCheck(CreateBindCtx(0, bindCtx));
    OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten, Moniker));
    OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));
  end;

begin
  objWMIService := GetWMIObject('winmgmts:\\localhost\root\default');
  colItems      := objWMIService.ExecQuery('SELECT * FROM SystemRestore','WQL',0);
  oEnum         := IUnknown(colItems._NewEnum) as IEnumVariant;
  while oEnum.Next(1, colItem, iValue) = 0 do
  begin
      WriteLn(Format('%s %-15s',['Description',colItem.Description]));
      WriteLn(Format('%s %-15s',['RestorePointType',RestorePointTypeToStr(colItem.RestorePointType)]));
      WriteLn(Format('%s %-15s',['EventType',EventTypeToStr(colItem.EventType)]));
      WriteLn(Format('%s %-15s',['SequenceNumber',colItem.SequenceNumber]));
      WriteLn(Format('%s %-15s',['CreationTime',WMITimeToStr(colItem.CreationTime)]));
      Writeln('');
  end;
end;

begin
 try
    CoInitialize(nil);
    try
      GetRestorePoints;
      Readln;
    finally
    CoUninitialize;
    end;
 except
    on E:Exception do
    Begin
        Writeln(E.Classname, ': ', E.Message);
        Readln;
    End;
  end;
end.

تسلیت شهادت

رحلت پیامبر همه جهانیان(ص)

و شهادت

امام حسن مجتبی (ع) تسلیت باد.