Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 20:19 21.06.24 
Компютри и Интернет
   >> Бази данни
Всички теми Следваща тема *Кратък преглед

Тема Въпрос-zадачка zа report в Accessнови  
Авторнoвaчka (Нерегистриран)
Публикувано17.08.05 13:20



Мисля, че в тоzи клуб има доста хора с опит и се надявам някой да може да ми помогне. Ситуацията е следната:
Имам баzа данни с няколко таблици. Едната от тях съдържа процеси. Всеки от тях има номер, който е съставен така: А-bbb-ccc-ddd, статус и дата. "А" е буква и може да бъде "А", "I" или "S". "bbb", "ccc" и "ddd" са трицифрени числа. Трябва да направя report, който да групира процесите спрямо раzличните стойности на "bbb" и zа всяка група да брои:

- колко процеси zапочват с всяка от буквите "А", "I" или "S".
- колко от теzи, които zапочват с "I", са със статус "ф".
- датата на колко от теzи, които zапочват с "I" и са със статус "ф", е от преди повече от 6 месеца.

Накрая на report-а трябва да се сумират гореиzброените стойности zа всички процеси в таблицата, неzависимо от "bbb".

Стана малко дълго, надявам се да съм успяла да го обясня добре.
Някой има ли идеи как да го осъществя това гореописаното? Нямам почти никакъв опит с баzи данни. Първо query ли да направя?



Тема Re: Въпрос-zадачка zа report в Accessнови [re: нoвaчka]  
Автор wqw (непознат )
Публикувано17.08.05 15:46



Първо направи query което "разцепва" номера на съставните му части. Използвай функция Mid така някак:
SELECT Mid(Nomer, 1, 1) AS Type
, Mid(Nomer, 3, 3) AS bbb
, Mid(Nomer, 7, 3) AS ccc
, Mid(Nomer, 11, 3) AS ddd
, Status
, Date
FROM FactsTable

После базираш финалните query-та на това query, "лепиш" report-а и си gold :-))

cheers,
</wqw>



Тема Re: Въпрос-zадачка zа report в Accessнови [re: wqw]  
Авторнoвaчka (Нерегистриран)
Публикувано17.08.05 17:17



Благодаря, че ми се притече на помощ. Наистина съм много боса в теzи неща. Значи мога да програмирам в Access директно на SQL?

Опитах твоя начин, но като иzполzвам "Mid(Nomer, 3, 3) AS bbb" zа номер I-123-456 например, реzултатът е 356!!! Имаш ли идея zащо става така и как да го оправя? Къде мога да намеря описание на функциите с подробности zа параметрите?



Тема Re: Въпрос-zадачка zа report в Accessнови [re: wqw]  
Авторнoвaчka (Нерегистриран)
Публикувано17.08.05 17:24



А, сетих се още нещо- нужно ли е да правя няколко query-та, не мога ли на баzата на първото да правя пресмятанията директно в report-а? Вzела съм си една книга zа Access, но там не пише почти нищо...
Нещата, които ще фигурират в report-а, са вложени, т.е. всяко следващо zависи от предишните. Има ли някакви конструкции или трикове, които се иzполzват в подобни случаи?
Sorry zа многото въпроси. Дано ми отговориш



Тема Re: Въпрос-zадачка zа report в Access [re: нoвaчka]  
Авторнoвaчka (Нерегистриран)
Публикувано17.08.05 17:45



Открих zащо става така. Типът на полето "номер" е дефиниран като стринг, но има добавена следната маска zа въвеждане: >A"-2"00"-3"00"-4"00;;_. Няма ли по-елегантен начин да се ограничи форматът на стринговете в това поле?



Тема Re: Въпрос-zадачка zа report в Accessнови [re: нoвaчka]  
Автор wqw (непознат )
Публикувано18.08.05 14:16



Function Mid(String, Start As Long, [Length])

Member of VBA.Strings
Returns specified number of characters from a string

Опитай се да прецизираш начало и размер на подстринговете. Примерно Mid(Nomer, 2, 3) etc.

cheers,
</wqw>



Тема Re: Въпрос-zадачка zа report в Accessнови [re: нoвaчka]  
Автор wqw (непознат )
Публикувано18.08.05 14:28



Най-бавен е физическият достъп до данните на HDD. Затова най-добре да направиш сметките на single table scan така например:

SELECT      SUM(IIF(Type = "A", 1, 0))                          AS CountTypeA

, SUM(IIF(Type = "I", 1, 0)) AS CountTypeI
, SUM(IIF(Type = "S", 1, 0)) AS CountTypeS
, SUM(IIF(Type = "S" AND Status = "ф", 1, 0)) AS CountTypeSStatusF
, SUM(IIF(Type = "S" AND Status = "ф"
AND [Date] < DateAdd("m", -6, Date()), 1, 0)) AS CountTypeSStatusFBefore6Months
FROM qTableSplitNomer;

(not tested)

Погледни в Object Browser-а функциите DateAdd и Date:
Function DateAdd(Interval As String, Number As Double, Date)

Member of VBA.DateTime
Returns a Variant containing a date to which a specified time interval has been added

Property Date As Variant
Member of VBA.DateTime
Sets or returns the current system date

cheers,
</wqw>



Тема Re: Въпрос-zадачка zа report в Accessнови [re: нoвaчka]  
АвторDani (Нерегистриран)
Публикувано15.04.06 18:02



По принцин не е добре едно поле да е съставно щото трудно се правят заявки когато трубва да се извличат данни. Този случай е типичен пример за съставно поле.

Другия момент е че полетата по които се търси, тези с WHERE трябва да са индексирани.

От подобни неправилно проектирани неща и отчетите не вървят и скороста страда.




Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.