Thanks a lot markros...
done..
i badly wanted to do that..coz i need to access the back end sql DB of a thirty party software which carry forwards it's datas to a new DB every year.
i ve put the DB name in a text file instead of changing the VFP code when the DB name changes evry year.
thanks..
****VFP Code *******
db_name=''
db_name=find_config('focusdb=')
stt=0
stt=SQLEXEC(hr_handle,"exec get_foc_bal &db_name",'foc_bal')
******************
Function find_config
Parameters find_what
row_no=Ascan(config_string,find_what)
If row_no>0
return_str=Right ( config_string(row_no),Len(config_string(row_no))-At('=',config_string(row_no)))
Endif
If Len(return_str)>1
Return return_str
Else
Return ''
Endif
Endfunc
*****SQL Proc******************
CREATE PROCEDURE get_foc_bal @table_name varchar(50)
as declare @cmd_exec varchar(1000)
select @cmd_exec="SELECT isnull(SUM(a.drbal),0) AS drbal,"+"isnull(SUM(a.crbal),0) AS crbal,"+@table_name+".dbo.mr000.Name, "+
@table_name+".dbo.mr000.L2 AS grp,"+ @table_name+".dbo.mr000.MasterId FROM (SELECT SUM(CASE WHEN Amount1 < 0.0 THEN Amount1 ELSE 0.0 END) drbal,
SUM(CASE WHEN Amount1 > 0.0 THEN Amount1 ELSE 0.0 END) crbal, Code acc FROM "+@table_name+".dbo.data WHERE (Flags & 0x400) = 0x400
GROUP BY Code
UNION
SELECT SUM(CASE WHEN Amount2 < 0.0 THEN Amount2 ELSE 0.0 END) drbal, SUM(CASE WHEN Amount2 > 0.0 THEN Amount2 ELSE 0.0 END)
crbal, BookNo acc FROM "+@table_name+".dbo.data
WHERE (Flags & 0x400) = 0x400 GROUP BY BookNo) a RIGHT OUTER JOIN
"+@table_name+".dbo.mr000 ON a.acc = "+@table_name+".dbo.mr000.MasterId
GROUP BY a.acc,"+ @table_name+".dbo.mr000.Name, "+@table_name+".dbo.mr000.L2,"+ @table_name+".dbo.mr000.MasterId ORDER BY "+@table_name+".dbo.mr000.Name"
exec(@cmd_Exec)
GO
***********************************