📄 dfdb_port_opt.m
字号:
else
calfig = findobj(0,'tag','calenfig');
figure(calfig)
end
case 'Calcancel'
delete(get(0,'CurrentFigure'));
clear cal
case 'CalClose'
% Close ActiveX calendar
F1 = findobj(0,'tag','dfdbportopt');
Startdatebox = findobj(F1,'tag','sdstr');
if get(cal,'day') == 0
close(findobj('tag','calenfig'))
err = errordlg('A day has to be selected','Date Selection');
close(findobj(0,'tag','calenfig'))
clear cal
dfdb_port_opt('Calendar')
set(err,'windowstyle','modal')
figure(err)
else
m = get(cal,'month');
y = get(cal,'year');
d = get(cal,'day');
startdate = [num2str(double(m)),'/',num2str(double(d)),'/',num2str(double(y))];
%startdate = get(cal,'value');
if datenum(startdate) > datenum(date)-2
err = errordlg('Starting Date must be at least two days ago.','Date Selection');
close(findobj(0,'tag','calenfig'))
clear cal
dfdb_port_opt('Calendar')
set(err,'windowstyle','modal')
figure(err)
else
set(Startdatebox,'string',startdate);
close(findobj('tag','calenfig'))
clear cal
end
end
setappdata(Startdatebox,'startdate',startdate);
case 'Calclosereqfcn'
shh = get(0,'ShowHiddenHandles');
set(0,'ShowHiddenHandles','on');
currFig = get(0,'CurrentFigure');
set(0,'ShowHiddenHandles',shh);
clear cal
delete(currFig);
case 'Helppage'
% Open help page for DFDB_PORT_OPT in the MATLAB Help Browser
HelpPath = which('dfdbportopthelp.html');
web(HelpPath);
case 'Yahoosym'
% Open the Yahoo symbol lookup web page in the MATLAB Help Browser
web('http://finance.yahoo.com/l');
case 'Closecall'
% Close function of DFDB_PORT_OPT figure
FF1 = findobj('type','figure','tag','calenfig');
shh=get(0,'ShowHiddenHandles');
set(0,'ShowHiddenHandles','on');
currFig=get(0,'CurrentFigure');
datafigure = findobj('type','figure','tag','datfig');
set(0,'ShowHiddenHandles',shh);
if isruntime
FF1 = findobj('type','figure','tag','calenfig');
if ishandle(FF1)
delete(FF1)
end
if ishandle(datafigure)
delete(datafigure)
end
delete(currFig)
quit force
else
if ishandle(FF1)
delete(FF1)
end
if ishandle(datafigure)
delete(datafigure)
end
delete(currFig);
clear datafigure FF1 currFig
end
case 'Datasource'
% Date Source preferences menu code.
pref = getpref('DFDBpref','datainput');
Startdatecal = findobj(gcf,'tag','calbut');
Startdatebox = findobj(gcf,'tag','sdstr');
Startdateprompt = findobj(gcf,'tag','sdp');
DScall = findobj(gcf,'tag','dsbut');
Symbols = findobj(gcf,'tag','symstr');
datafigure = findobj('type','fig','tag','datfig');
if strcmp(pref,'df')
set(findobj(gcf,'tag','dfmen'),'checked','on')
set(findobj(gcf,'tag','dbmen'),'checked','off')
set(Startdatecal,'enable','on')
set(Startdateprompt,'enable','on')
set(Startdatebox,'enable','on','string','')
set(DScall,'enable','off')
set(Symbols,'string','')
if ishandle(datafigure)
delete(datafigure)
end
clear datafigure
elseif strcmp(pref,'db')
set(findobj(gcf,'tag','dbmen'),'checked','on')
set(findobj(gcf,'tag','dfmen'),'checked','off')
set(Startdatecal,'enable','off')
set(Startdateprompt,'enable','off')
set(Startdatebox,'string','01/02/97','enable','off')
set(DScall,'enable','on')
DFDB_port_opt('SelectData','start')
set(Symbols,'string','')
end
if isequal(getpref('DFDBpref','datainput'),'db')
end
case 'SelectData'
datas = getdatasources;
if nargin == 1 | (nargin > 1 & strcmp(varargin{2},'start'))
option = 'start';
shh = get(0,'ShowHiddenHandles');
set(0,'ShowHiddenHandles','on')
datafigure = findobj(0,'tag','datfig');
set(0,'ShowHiddenHandles',shh);
if ~isempty(datafigure)
figure(datafigure)
return
end
else
option = varargin{2};
end
F1=findobj('type','fig','tag','dfdbportopt');
switch option
case 'start'
datafigure = figure('name','Select Data','numbertitle','off','tag','datfig','menubar','none');
frame = uicontrol('style','frame','units','norm','pos',[.05 .12 .9 .82]);
DBselectprompt = uicontrol('style','text','units','norm','pos',[.07 .905 .28 .03],'string', ...
'Data Sources','foregroundcolor','b','fontsize',10);
DBlist=uicontrol('style','list','units','norm','pos',[.07 .14 .28 .76],'tag','dblist','max',1000, ...
'min',1,'string',datas,'backgroundcolor','w','callback','DFDB_port_opt(''SelectData'',''DBselect'')');
Tableprompt = uicontrol('style','text','units','norm','pos',[.36 .905 .28 .03],'string', ...
'Tables','foregroundcolor','b','fontsize',10);
Tablelist = uicontrol('style','list','units','norm','tag','tables','pos',[.36 .14 .28 .76], ...
'max',1000,'min',1,'callback','DFDB_port_opt(''SelectData'',''Tableselect'')','backgroundcolor','w');
Fieldprompt = uicontrol('style','text','units','norm','pos',[.65 .905 .28 .03],'string', ...
'Assets','foregroundcolor','b','fontsize',10);
Fieldlist = uicontrol('style','list','units','norm','pos',[.65 .14 .28 .76],'max',1000,'min', ...
1,'tag','fields','backgroundcolor','w','callback','DFDB_port_opt(''SelectData'',''Fieldselect'')');
Assettext = uicontrol('style','text','units','norm','pos',[.3 .005 .35 .052],'string', ...
'Send Symbols for Importing -->','fontsize',10,'backgroundcolor',[.8 .8 .8], ...
'foregroundcolor','b');
Applybut = uicontrol('string','Apply','units','norm','pos',[.65 .01 .3 .06], ...
'callback','DFDB_port_opt(''SelectData'',''Sendsymbols'')','fontsize',10);
set(datafigure,'handlevis','callback');
case 'DBselect'
DBlist = findobj(gcf,'tag','dblist');
Tablelist = findobj(gcf,'tag','tables');
Fieldlist = findobj(gcf,'tag','fields');
Symbols = findobj(F1,'tag','symstr');
dbnum = get(DBlist,'value');
selectedDB = datas{dbnum};
setappdata(DBlist,'database',selectedDB);
if ~isequal(selectedDB,'DFDBsample')
err = errordlg('Invalid Data Source','Source Selection');
set(err,'windowstyle','modal')
return
end
% conn = getappdata(Symbols,'connection');
if exist('conn')
close(conn)
clear conn
end
conn = database(selectedDB,'','');
Symbols = findobj(F1,'tag','symstr');
setappdata(Symbols,'connection',conn);
%setappdata(Tablelist,'connection',conn);
d = dmd(conn);
ctg = get(conn,'Catalog');
tinfo = tables(d,ctg,'');
tableType = tinfo(:,2);
tableName = tinfo(:,1);
%Table types of TABLE are desired tables
i = find(~(strcmp({'SYSTEM TABLE'},tableType) | ...
strcmp({'SYNONYM'},tableType)));
tbllist = tableName(i);
set(Tablelist,'string',tbllist,'value',[]);
set(Fieldlist,'string','');
case 'Tableselect'
Fieldlist = findobj(gcf,'tag','fields');
Tablelist = findobj(gcf,'tag','tables');
Symbols = findobj(F1,'tag','symstr');
conn = getappdata(Symbols,'connection');
%Get selected tables
tval = get(Tablelist,'value');
tbllist = get(Tablelist,'string');
tablez = tbllist(tval);
setappdata(Symbols,'Tables',tablez);
%Get metadata of connection and get column names
d = dmd(conn);
L = length(tablez);
fields = {};
for i = 1:L
table = tablez{i}; %Columns method returns more info, but is much slower
ex = exec(conn,['select * from ' table]);
ex = fetch(ex,1);
tmp = columnnames(ex);
eval(['tabfields = {' tmp '};'])
close(ex);
%Prepend tablename if JOIN operation
if length(tval) > 1
for j = 1:length(tabfields)
tabfields{j} = [table '.' tabfields{j}];
end
fields = [fields;tabfields'];
else
fields = tabfields';
end
end
fields(1)=[];
%Display fieldnames
set(Fieldlist,'String',fields,'value',[]);
case 'Fieldselect'
Fieldlist = findobj(gcf,'tag','fields');
Tablelist = findobj(gcf,'tag','tables');
Symbols = findobj(F1,'tag','symstr');
fields = get(Fieldlist,'string');
fval = get(Fieldlist,'value');
fieldcell = fields(fval);
fieldstr = fieldcell{1};
for i=2:length(fieldcell)
fieldstr=[fieldstr,', ',fieldcell{i}];
end
setappdata(Fieldlist,'symbols',fieldstr);
setappdata(Fieldlist,'symbolcell',fieldcell);
case 'Sendsymbols'
Symbols = findobj(F1,'tag','symstr');
Fieldlist = findobj(gcf,'tag','fields');
DBlist = findobj(gcf,'tag','dblist');
selectedDB = getappdata(DBlist,'database');
fieldcell = getappdata(Fieldlist,'symbolcell');
assets = getappdata(Fieldlist,'symbols');
if isempty(assets)
err = errordlg('No assets selected','Send symbols for Importing');
set(err,'windowstyle','modal')
return
end
dates = 'TS_Dates';
set(Symbols,'string',assets)
setappdata(Symbols,'dates',dates)
figure(F1)
end
otherwise
err = error('Invalid input argument. DFDB_PORT_OPT takes no inputs.');
set(err,'windowstyle','modal')
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -