Вверх ↑
Ответов: 12
Рейтинг: 0
#1: 2017-08-29 21:20:48 ЛС | профиль | цитата
nesco писал(а):
Попробуйте ODBC заменит на OLE. У меня с ODBC выдает ошибку, а с OLE все прекрасно работает.


я когда только начинал этот проект, начинал на OLE, и сразу столкнулся что OLE не отрабатывает большие файлы (не помню толи до 1000 строк, толи до 4000 строк)
200 строк которые я дал как образец, OLE отрабатывает прекрасно. но с файлом 9400 строк, у меня OLE даже в MT_MTArray не заливает, не говоря уже о прогрессе.

проверьте пожалуйста, может я не правильно OLE подключаю.
у меня почти тот же вылет, только озу больше жрет 580Mb. (ODBC <=150Mb)
код на OLE (прайс сам скачается. ~2,47 Mb)

Add(MainForm,2953706,56,112)
{
Width=423
Height=230
link(onCreate,4865314:doDownload,[])
}
Add(LineBreakEx,12280247,350,287)
{
Caption="Имя"
Type=2
}
Add(ProgressBarRush,16035786,567,91)
{
Left=15
Top=111
Width=375
Height=25
}
Add(LineBreakEx,12817326,357,91)
{
Caption="прогрес"
Type=1
link(OnEvent,12325891:doWork1,[])
}
Add(Hub,14895446,294,308)
{
OutCount=3
link(onEvent1,2271599:In,[(320,314)(320,293)(254,293)(254,272)])
link(onEvent2,5926953:doStrCat,[])
link(onEvent3,8389943:doMessage,[(331,328)(331,398)])
}
Add(Message,8389943,357,392)
{
Message="Ок"
}
Add(DoData,10878444,1246,539)
{
}
Add(LineBreakEx,8130615,133,175)
{
Caption="Имя"
Type=3
link(_Data,4865314:Var,[])
}
Add(Memory,4937846,525,308)
{
}
Add(Dir,154286,343,238)
{
}
Add(FilePart,5229429,455,315)
{
link(onPath,4937846:doValue,[(504,321)(504,314)])
link(onName,1359034:doString,[])
}
Add(StrCat,5926953,343,315)
{
link(onStrCat,16714654:doEvent1,[])
link(Str1,154286:CurrentDir,[])
link(Str2,12280247:getVar,[])
}
Add(Hub,16714654,406,315)
{
OutCount=3
link(onEvent1,5229429:doPart,[])
link(onEvent2,6939220:doString,[(449,328)(449,363)])
link(onEvent3,11092737:doOpen,[(435,335)(435,426)])
}
Add(FormatStr,1359034,672,322)
{
Mask="SELECT * FROM `%1.xls`.`sheet1$`"
Point(FString)
}
Add(FormatStr,6939220,518,357)
{
Mask="DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};\r\nFIL=Excel 12.0;\r\nDBQ=%1;\r\nDefaultDir=%2;\r\nFirstRowWhasNames=1;\r\nReadOnly=false;\r\nScanRows=0;"
Point(FString)
link(Str2,4937846:Value,[])
}
Add(MultiElement,12325891,434,91)
{
link(onEvent1,16035786:doPosition,[])
link(onEvent2,7933583:doWork2,[])
}
BEGIN_SDK
Add(EditMulti,9150291,21,21)
{
EventCount=2
WorkCount=1
link(doWork1,6017396:Cable,[(49,27)(49,99)])
}
Add(CableEvent,6017396,77,93)
{
Count=3
link(Wire1,14032774:doOperation,[])
link(Wire2,3760010:doOperation,[(119,106)(119,43)])
link(Wire3,9150291:onEvent2,[(206,113)(206,34)])
}
Add(Memory,14148284,182,37)
{
}
Add(Math,3760010,133,37)
{
OpType=3
Op2=100
ResultType=0
link(onResult,14148284:doValue,[])
}
Add(Math,14032774,175,93)
{
OpType=3
ResultType=0
link(onResult,9150291:onEvent1,[(264,99)(264,27)])
link(Op2,14148284:Value,[])
}
END_SDK
Add(MT_MTArrayRW,4865845,847,406)
{
link(Array,13076694:Array,[])
}
Add(MT_MTArray,13076694,847,322)
{
}
Add(LineBreak,6306835,763,322)
{
Caption="clear_mt"
link(Out,13076694:doClear,[])
Primary=[2271599,-497,-56]
}
Add(Message,8158759,567,154)
{
Caption="Ошибка XLS"
}
Add(LineBreakEx,13650324,511,154)
{
Caption="error"
Type=1
link(OnEvent,8158759:doMessage,[])
}
Add(OLEdb_Session,10707432,581,420)
{
link(onCreate,3056747:doQuery,[])
link(dbHandle,11092737:dbHandle,[(587,408)(563,408)(563,471)(524,471)])
}
Add(OLEdb_Query,3056747,665,420)
{
link(onQuery,4865845:doAdd,[])
link(onError,4116822:doWork,[])
link(dbSession,10707432:dbSession,[(671,408)(629,408)(629,468)(587,468)])
link(Text,1359034:FString,[])
}
Add(OLEdb,11092737,518,420)
{
link(onConnect,10707432:doCreate,[])
link(Driver,6939220:FString,[])
}
Add(LineBreakEx,4116822,735,434)
{
Caption="error"
}
Add(MultiElementEx,4865314,133,126)
{
@Hint=#16:качаем прайс xls|
link(onEvent2,13149922:doEvent1,[])
link(onFalse,4530132:doWork,[])
AddHint(51,-41,100,13,@Hint)
}
BEGIN_SDK
Add(EditMultiEx,13021890,21,21)
{
WorkCount=#10:doDownload|
EventCount=#8:onEvent2|7:onFalse|
VarCount=#3:Var|
Width=622
Height=130
link(doDownload,26344:doDownload,[(49,27)(49,258)])
link(Var,15142083:getVar,[])
}
Add(HTTP_Get,26344,77,252)
{
link(onDownload,499728:doConvert,[])
link(URL,3085624:Value,[])
}
Add(Memory,3085624,77,189)
{
Default=String(http://complektuha.com.ua/index.php?show_price=yes)
}
Add(Convertor,499728,126,259)
{
Mode=11
link(onResult,4003481:doSearch,[])
}
Add(BlockFind,4003481,182,259)
{
StartBlock="href="price/"
EndBlock=".xls"
link(onSearch,2978584:doEvent1,[])
}
Add(Replace,16349420,294,266)
{
SubStr="href="price/"
link(onReplace,15468121:doValue,[])
}
Add(Replace,5590204,294,210)
{
SubStr="href=""
DestStr="http://complektuha.com.ua/"
link(onReplace,1076768:In,[])
}
Add(Memory,15468121,350,266)
{
link(onData,1706368:doStrCat,[])
}
Add(Hub,2978584,238,259)
{
link(onEvent1,5590204:doReplace,[(266,265)(266,216)])
link(onEvent2,16349420:doReplace,[])
}
Add(LineBreakEx,15142083,21,126)
{
Caption="Имя"
Type=2
}
Add(LineBreakEx,3961800,350,308)
{
Caption="Имя"
Type=3
link(_Data,15468121:Value,[])
}
Add(MultiElementEx,9091633,602,224)
{
link(onStatus,12473625:Wire1,[])
link(Out,12473625:Wire2,[])
link(onSwitch,12473625:Wire3,[])
link(onEvent2,883984:doWork2,[])
link(Data,1649767:Var,[])
}
BEGIN_SDK
Add(EditMultiEx,7609349,21,21)
{
WorkCount=#8:doEvent1|7:doWork1|7:doValue|
EventCount=#8:onStatus|3:Out|8:onSwitch|8:onEvent2|
DataCount=#4:Data|8:FileName|
Width=461
Height=158
VOffset=21
HOffset=126
link(doEvent1,10859717:In,[(49,48)(49,34)])
link(doWork1,8528277:In,[])
}
Add(HTTPClient,6348577,266,364)
{
Point(RawHeaders)
link(URL,9994908:Value,[])
link(FileName,7609349:Data,[(279,199)(153,199)])
link(onHeadersAvail,3555937:doCompare,[])
link(onFinish,9854373:doEvent,[])
link(onDownloadProgress,1590045:doWork,[])
}
Add(Thread,4549505,98,364)
{
Delay=200
FastStop=0
link(onExec,12070733:doEvent1,[])
}
Add(LineBreakEx,10269870,735,392)
{
Caption="len"
Type=2
}
Add(DoData,4089202,735,420)
{
link(onEventData,3570096:In,[])
link(Data,10269870:getVar,[])
}
Add(LineBreakEx,16033729,273,434)
{
Caption="len"
Type=3
link(_Data,6348577:ContentLength,[])
}
Add(LineBreak,9925975,322,49)
{
Caption="max"
link(Out,7609349:Out,[])
Primary=[3570096,469,371]
}
Add(If_else,3555937,434,364)
{
Type=1
Op2=Integer(4000)
link(onTrue,13800225:doMessage,[(530,370)(530,321)])
link(onFalse,12954654:doEvent1,[(474,377)(474,384)])
link(Op1,2602030:getVar,[])
}
Add(LineBreakEx,2602030,434,329)
{
Caption="len"
Type=2
}
Add(Hub,7297105,553,420)
{
link(onEvent1,4089202:doData,[])
link(onEvent2,16128615:doData,[])
}
Add(Message,13800225,595,315)
{
Message="Прайс лист не найден, либо поврежден."
Caption="Ошибка"
}
Add(Memory,9994908,266,231)
{
}
Add(IndexToChanel,9854373,371,371)
{
Point(Index)
link(onEvent2,7609349:onEvent2,[(423,384)(423,69)])
link(Index,5735670:State,[])
}
Add(Switch,5735670,371,315)
{
DataOn=Integer(1)
DataOff=Integer(0)
Default=0
Point(doOn)
Point(State)
}
Add(Hub,13964544,189,287)
{
link(onEvent1,5735670:doReset,[(339,293)(339,328)])
link(onEvent2,6348577:doExecute,[(227,300)(227,391)])
}
Add(Hub,12954654,483,378)
{
OutCount=3
link(onEvent1,3253426:doData,[])
link(onEvent2,7297105:doEvent1,[(525,391)(525,426)])
link(onEvent3,4549505:doStart,[(509,398)(509,428)(67,428)(67,370)])
}
Add(Hub,12070733,168,364)
{
link(onEvent1,5735670:doOn,[(207,370)(207,335)])
link(onEvent2,6348577:doLoadFile,[])
}
Add(LineBreakEx,1590045,308,378)
{
Caption="progres"
}
Add(LineBreakEx,7633167,406,35)
{
Caption="progres"
Type=1
link(OnEvent,7609349:onStatus,[(471,41)(471,48)])
}
Add(LineBreakEx,9057597,658,427)
{
Caption="progres"
}
Add(DoData,16128615,602,427)
{
Data=Integer(0)
link(onEventData,9057597:doWork,[])
}
Add(LineBreak,11638327,357,56)
{
Caption="visible"
link(Out,7609349:onSwitch,[])
Primary=[2876190,315,322]
}
Add(DoData,3253426,602,378)
{
Data=String(загрузка прайса)
link(onEventData,2876190:In,[])
}
Add(LineBreak,2851096,224,231)
{
Caption="url"
link(Out,9994908:doValue,[])
Primary=[10859717,-147,-203]
}
Add(LineBreak,14518292,105,287)
{
Caption="download"
link(Out,13964544:doEvent1,[])
Primary=[8528277,-42,-238]
}
END_SDK
Add(CableWork,12473625,651,224)
{
Count=3
link(Cable,213957:doWork,[])
}
Add(LineBreakEx,213957,693,224)
{
Caption="прогрес"
}
Add(LineBreakEx,12547630,539,28)
{
Caption="прогрес"
Type=1
link(OnEvent,13021890:onFalse,[])
}
Add(StrCat,1706368,413,266)
{
link(onStrCat,590350:doFileExists,[])
link(Str1,563617:CurrentDir,[])
link(Str2,10354653:getVar,[])
}
Add(LineBreakEx,10354653,420,238)
{
Caption="Имя"
Type=2
}
Add(Dir,563617,413,196)
{
}
Add(FileTools,590350,476,245)
{
link(onEnd,8551796:doEvent,[])
}
Add(IndexToChanel,8551796,525,245)
{
link(onEvent1,9091633:doWork1,[(579,251)(579,237)])
link(onEvent2,883984:doWork3,[(674,258)])
}
Add(LineBreak,9842146,532,224)
{
Caption="url"
link(Out,9091633:doEvent1,[])
Primary=[1076768,-189,-14]
}
Add(HubEx,883984,670,245)
{
Angle=3
link(onEvent,13021890:onEvent2,[(674,27)])
}
Add(LineBreak,493916,413,308)
{
Caption="путь"
Type=1
link(Data,1706368:Result,[])
Primary=[1649767,189,-133]
}
Add(InfoTip,16483166,112,70)
{
Info=#57:прайс: http://complektuha.com.ua/index.php?show_price=yes|
Font=[MS Sans Serif,12,0,0,1]
Width=414
Height=39
}
END_SDK
Add(LineBreakEx,4530132,182,133)
{
Caption="прогрес"
}
Add(Label,16715060,504,98)
{
Left=65
Top=85
}
Add(DoData,9355480,385,126)
{
Data=String(чтение прайса)
link(onEventData,7933583:doWork3,[(480,132)])
}
Add(Hub,13149922,273,126)
{
link(onEvent1,9355480:doData,[])
link(onEvent2,14895446:doEvent1,[(301,139)(301,226)(225,226)(225,314)])
}
Add(HubEx,7933583,476,98)
{
link(onEvent,16715060:doText,[])
}





RAWY_EX писал(а):
могу предложить так
заменить весь код на тот что выше

ради эксперимента я попробую, но перезалейте код "new" он не полный.
удалите из схемы MemoryStream (файл xls) думаю это из-за него.
карма: 0

0
Редактировалось 12 раз(а), последний 2017-08-29 22:36:04