ADOTable & Filtered
11 отговора
304 прегледа
ADOTable & Filtered
Здравейте.
Свързал съм компонента ADOTable с таблица на Excel (TableDirect=TRUE) . Опитвам се по всякакъв начин да филтрирам данните по Дата, но не ми дава никакъв резултат. 10х на всеки който успее да ми помогне, или се опита.
Ето малко сорс.
Варианти, които не дават грешка но не дават резултат
1) AStr:='Date <= '''+FormatDateTime('dd.mm.yyyy',Date1)+'''';
2) AStr:='Date <= '''+FormatDateTime('dd.mm.yyyy hh:nn:ss',Date1)+'''';
3) Astr:='Date <= '''+DateTimeToStr(Date1)+'''';
ADOTableExcelFiles.Filtered:=TRUE;
ADOTableExcelFiles.Filter:=AStr;
Не мога да стартирам SQL заявка, защото ми дава грешка при From клаузата, не може да разпознае таблицата, предполагам заради знака '$', който се слага накрая при работа с Excel, за разпознаване на различните Sheet, като отделни таблици
Свързал съм компонента ADOTable с таблица на Excel (TableDirect=TRUE) . Опитвам се по всякакъв начин да филтрирам данните по Дата, но не ми дава никакъв резултат. 10х на всеки който успее да ми помогне, или се опита.
Ето малко сорс.
Варианти, които не дават грешка но не дават резултат
1) AStr:='Date <= '''+FormatDateTime('dd.mm.yyyy',Date1)+'''';
2) AStr:='Date <= '''+FormatDateTime('dd.mm.yyyy hh:nn:ss',Date1)+'''';
3) Astr:='Date <= '''+DateTimeToStr(Date1)+'''';
ADOTableExcelFiles.Filtered:=TRUE;
ADOTableExcelFiles.Filter:=AStr;
Не мога да стартирам SQL заявка, защото ми дава грешка при From клаузата, не може да разпознае таблицата, предполагам заради знака '$', който се слага накрая при работа с Excel, за разпознаване на различните Sheet, като отделни таблици
Тъпо мнение...
ама не е ли по-добре да ползваш SQL query - а не Table компонент - по-бързо е (или поне така мисля) - и предаването на параметрите - които в твоя случай са дати - е по чисто реализирано - нямаш форматирането което правиш.
Все пак не съм сигурен дали това е решение - не съм работил с ADO.
---

Все пак не съм сигурен дали това е решение - не съм работил с ADO.
---
Re: ADOTable & Filtered
Здравей!
Проблема ти с курса на долара
ще решиш с квадратни скоби
,
колкото до директната таблица мисля че трябва да не е истина защото ако е ти връщо всичко в таблицата.
Венцислав Александрийски
Проблема ти с курса на долара
колкото до директната таблица мисля че трябва да не е истина защото ако е ти връщо всичко в таблицата.
Венцислав Александрийски
Re: ADOTable & Filtered
Програмата не е сложна. Следя един процес през Com порта, който ми връща данни (температура) през три секунди, и за да не се натрупва излишна информация в базата, на определ период (един ден) записвам данните в Excel файл (така иска клиента), но е възможно след това данните да се преглеждат и искам да ползвам директния запис от Excel за определения период.
Phantomas - както казваш не си работил с ADO, и на мен ми е втората програма, която пиша. Опитах с SQL, но има един малък проблем. ADOConnection приема Excel файла като база данни, а всеки Sheet като отделна таблица със съответното име, но слага автоматично знака ($) след името. Ако го махна в заявката, дава грешка, че няма такава таблица, ако го оставя ми дава грешка във From клаузата. Не разбирам това, което е писал v_automation, но ако нещо не се шегува ще опитам тези скоби (по между другото не познавам много добре и SQL заявките, но засега се оправям с това, което ми е необходимо). Вярно е че таблицата показва всички данни, но проблема е в това, че данните се визуализират и графично и трябва да се наблюдава определен отрязък от време. Дано изложението ми не е станало много дълго. Ще опитам да се боря с проблема.
Phantomas - както казваш не си работил с ADO, и на мен ми е втората програма, която пиша. Опитах с SQL, но има един малък проблем. ADOConnection приема Excel файла като база данни, а всеки Sheet като отделна таблица със съответното име, но слага автоматично знака ($) след името. Ако го махна в заявката, дава грешка, че няма такава таблица, ако го оставя ми дава грешка във From клаузата. Не разбирам това, което е писал v_automation, но ако нещо не се шегува ще опитам тези скоби (по между другото не познавам много добре и SQL заявките, но засега се оправям с това, което ми е необходимо). Вярно е че таблицата показва всички данни, но проблема е в това, че данните се визуализират и графично и трябва да се наблюдава определен отрязък от време. Дано изложението ми не е станало много дълго. Ще опитам да се боря с проблема.
Re: ADOTable & Filtered
Слагай за име на таблицата [Sheet1$] и т.н.
_ _ _
Time is like a drug. Too much of it kills you.
_ _ _
Time is like a drug. Too much of it kills you.
Re: ADOTable & Filtered
Здравей!
Освен за скобите бях ти споменал че табледирект=истина смятам че не е твоя случай.
Отговора на killall би трябвало да разсее съмненията око сериозността на моят отговор
Обърни внимание и на отговора но phantomas като размисъл за избор на оптимално решение за твоя случай
Венцислав Александрийски
Освен за скобите бях ти споменал че табледирект=истина смятам че не е твоя случай.
Отговора на killall би трябвало да разсее съмненията око сериозността на моят отговор
Обърни внимание и на отговора но phantomas като размисъл за избор на оптимално решение за твоя случай
Венцислав Александрийски
Re: ADOTable & Filtered
Благодаря на всичко за отговорите. Не искам да се обиждате за неща, в които се съмнявам, но човек трябва да е работил с нещо за да е сигурен. Може да става вече даже и нагло, но се получава интересно нещо. По този начин ADOQuery се приема и се отваря, когато съм в режим на дизайн, но когато стартирам програмата, дава съобщение 'The Microsoft Jet database engine cannot open the file ''. It is already opened exclusively by another user, or you need permission to view its data'. Това го разбирам, че приема за име на таблицата '', или с други думи нищо. Все пак благодаря. Аз ще се мъча, а ако някой успее да ми помогне добре. Възможно е да са някои настройки. По между другото ето настройките на ConnectionString
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyPrograms\Delphi7\ExcelFiles\ElPort072004.xls;Extended Properties=Excel 8.0;Persist Security Info=False
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyPrograms\Delphi7\ExcelFiles\ElPort072004.xls;Extended Properties=Excel 8.0;Persist Security Info=False
Re: ADOTable & Filtered
Може и да съм разбрал неправилно - ама като отвориш в дизайн тайм - таблицата - след като си настроиш полетата - я затвори!!! - запиши така и компилирай. Добави си код за отваряне на таблицата в run-time - и мисля, че с това трябва да ти приключи проблема.
---

---
Re: ADOTable & Filtered
Здравей!
Защо не кажеш за какво мериш температурата през 3 минути и от какъв датчик взимаш сигнала, и каква е крайната цел на цялата гимнастика
. Така по би могло да се измисли нещо по-така оптимално. Дори може и да се окаже че по-доброто решение не се нуждае от база данни
.
А по проблема ти с който се бориш в момента мога да ти кажа че джет драйвера отваря екселските файлове както ти пише в съобщението "ексклузивно", което означава че с файла може да има само една връзка, която в случая вече е направена от делфито и затова твоето приложение се скапва.
Виж съвета на фантомас, но имай придвид че подобен случай ще се получи и ако някой е отворил файлати от ексел и приложението ти се опита да се свързва в това време. Който превари да отвори файла печели
.
Венцислав Александрийски
Защо не кажеш за какво мериш температурата през 3 минути и от какъв датчик взимаш сигнала, и каква е крайната цел на цялата гимнастика
А по проблема ти с който се бориш в момента мога да ти кажа че джет драйвера отваря екселските файлове както ти пише в съобщението "ексклузивно", което означава че с файла може да има само една връзка, която в случая вече е направена от делфито и затова твоето приложение се скапва.
Виж съвета на фантомас, но имай придвид че подобен случай ще се получи и ако някой е отворил файлати от ексел и приложението ти се опита да се свързва в това време. Който превари да отвори файла печели
Венцислав Александрийски
Re: ADOTable & Filtered
Благодаря на всички. Въпроса го реших (разбира се с ваша помощ) по с ледния начин. Поставих ADOQuery без никакви връзки към бази и т.н. На ConnectionString задавам стойностите в момента на стартиране на заявката. Ето по-долу примера.
BStr:='From '+'[Day10$]'+'';
with ADOQueryExcel do
begin
Close;
ConnectionString:=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyPrograms\Delphi7\Elport20\ExcelFiles\ElPort_07_2004.xls;Extended Properties=Excel 8.0;Persist Security Info=False';
SQL.Clear;
SQL.Add('SELECT * ');
SQL.Add(BStr);
Open;
end;
BStr:='From '+'[Day10$]'+'';
with ADOQueryExcel do
begin
Close;
ConnectionString:=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyPrograms\Delphi7\Elport20\ExcelFiles\ElPort_07_2004.xls;Extended Properties=Excel 8.0;Persist Security Info=False';
SQL.Clear;
SQL.Add('SELECT * ');
SQL.Add(BStr);
Open;
end;
Re: ADOTable & Filtered
видях че си успял с ADOQuery, но да питам за ADOTable/Filter:
ти баш така ли прилагаш филтъра
ADOTableExcelFiles.Filtered:=TRUE;
ADOTableExcelFiles.Filter:=AStr;
и ако да, дали да не опиташ така:
ADOTableExcelFiles.Filtered:=FALSE;
ADOTableExcelFiles.Filter:=AStr;
ADOTableExcelFiles.Filtered:=TRUE;
не съм сигурен как трябва да формираш AStr, но за начина за сетване на филтъра...
Am I evil?
Yes I am.
ти баш така ли прилагаш филтъра
ADOTableExcelFiles.Filtered:=TRUE;
ADOTableExcelFiles.Filter:=AStr;
и ако да, дали да не опиташ така:
ADOTableExcelFiles.Filtered:=FALSE;
ADOTableExcelFiles.Filter:=AStr;
ADOTableExcelFiles.Filtered:=TRUE;
не съм сигурен как трябва да формираш AStr, но за начина за сетване на филтъра...
Am I evil?
Yes I am.
Re: ADOTable & Filtered
Ще опитам начина ти, но предпочитам с ADOQuery, по бързо е. 10х