PDA

View Full Version : مشكل Query و انتخاب تعدادي از اطلاعات بانك



mandana2010
یک شنبه 24 شهریور 1387, 13:10 عصر
با سلام
من مي خوام از بانك اطلاعاتي (كه access يا sql ممكنه باشه ) گزارشي تهيه كنم كه توي اون كاربر مشخصي مي كنه چه اطلاعاتي براش نمايش داده بشه يعني چه چيزهايي توي شرط گزارش در نظر گرفته بشه مثلا كاربر مي خواد توي بازه زماني مشخصي از يكسري اطلاعاتي گزارش تهيه كنه و شروط ديگه رو با زدن تيك چك باكس هايي كه روي فرم قرار داره انتخاب مي كنه كه جزء شروطش باشند يا نه كه تعداد اين چك باكس ها 5 عدد است اگر بخواهيم براي تيك داشتن چك باكس ها و در نتيجه شروطي رو كه بايد توي گزارش اعمال بشه از دستورات IF استفاده كنيم بايد دو به توان پنج حالت رو كد نويسي كنيم و خيلي هم پيچيده مي شه . مي خواستم ببينم راه ديگه اي وجود نداره كه احتياج به اين همه دستور IF و كدنويسي نداشته باشه

Touska
یک شنبه 24 شهریور 1387, 13:24 عصر
شما میتونید از طریق ساخت Query خود از طریق String عمل نمایید ، یک نمونه اش رو اینجا م ذارم :


Var
Filter : String;
begin
Filter := '';

IF CheckBox2.Checked Then
IF Filter = '' Then
Filter := 'WHERE Parsita_Drugs_Inv_Detail.Request_Drug = '+QuotedStr(NumEdit1.Text)
Else
Filter := Filter + ' AND Parsita_Drugs_Inv_Detail.Request_Drug = '+QuotedStr(NumEdit1.Text);

IF CheckBox3.Checked Then
IF Filter = '' Then
Filter := 'WHERE Parsita_Drugs_Inv.Request_Post >= '+QuotedStr(MaskEdit1.Text)
Else
Filter := Filter + ' AND Parsita_Drugs_Inv.Request_Post >= '+QuotedStr(MaskEdit1.Text);

IF CheckBox4.Checked Then
IF Filter = '' Then
Filter := 'WHERE Parsita_Drugs_Inv.Request_Post <= '+QuotedStr(MaskEdit2.Text)
Else
Filter := Filter + ' AND Parsita_Drugs_Inv.Request_Post <= '+QuotedStr(MaskEdit2.Text);

And More .....


Data1.Sum_Sub.Active := False;
Data1.Sum_Sub.CommandText := 'SELECT Parsita_Drugs_Inv.*, Parsita_Drugs_Inv_Detail.* ,'+
' (SELECT [DrugStore].[dbo].[Totol_Drug_In_Inv] (Parsita_Drugs_Inv_Detail.Request_Drug,'+QuotedStr ('')+')) AS Baghimandeh '+
' FROM Parsita_Drugs_Inv INNER JOIN '+
' Parsita_Drugs_Inv_Detail '+
' ON Parsita_Drugs_Inv.Number = Parsita_Drugs_Inv_Detail.Number '+
' INNER JOIN Parsita_Drugs ON Parsita_Drugs_Inv_Detail.Request_Drug = Parsita_Drugs.Code_P '+
Filter;


بعدش هم FIlter خودتون رو True می کنید.