Малко помощ по Microsoft Access

Компютри и интернет, аудио и видео, GSM, електроуреди и всяка друга техника, различна от автомобилната, обзавеждане
Потребителски аватар
streetracer1
Мнения: 460
Регистриран на: Вто 05 ное 2013 19:15
Автомобил: Seat Ibiza
Двигател: BMT 2008г
Местоположение: Враца/София

Малко помощ по Microsoft Access

Мнениеот streetracer1 » Сря 30 апр 2014 10:25


Момчета, здравейте! Адски ще съм благодарен ако някой от Вас има някакви познания по Аксес и удари едно рамо в изпълнението на тази задача! Значи иска се да се направи ето това:
във формата за книгите, която направихте току-що, до бутоните със стрелките добавете бутон „Заявка за зареждане на склад“. Направете така, че когато потребителят кликне бутона, да се направи проверка дали складовата наличност на съответната книга (AvailableQuantity в Books) е по-малка от 5 и ако е така, то да се създаде e-mail съобщение до sales@izmislendostavchik.com с прикачен автоматично генериран Excel файл с данните от заявката „Books Query“. Ако складовата наличност е по-голяма или равна на 5, то да се извежда съобщение „В момента не е нужно зареждане на тази книга".

С всичко до тук съм се справил, но тази задача вече не знам как става... Мисля си за макрос, но не успявам да го създам така, че да сработи. Всякаква помощ ще ми е адско полезна!
Ето линк към работната книга до момента: http://dox.bg/files/dw?a=d035b0584e

Последна промяна от streetracer1 на Чет 01 май 2014 12:39, променено общо 1 път.




Потребителски аватар
Чудомир
Мнения: 2856
Регистриран на: Вто 18 юли 2006 0:37
Автомобил: Passat 5.5 + Caravelle T4
Двигател: 03 V6 AMX + 97 VR6 AES
Местоположение: Нейде из Швабско или под тепетата

Re: Малко помощ по Майкрософт Аксес

Мнениеот Чудомир » Сря 30 апр 2014 12:47


С макро няма как да стане.

Имаш основни грешки, които избождат очите:

В books query колонката Year я има 2 пъти
Думичката Year e резервирана, така че не е хубаво да се ползва за име на колонка, поле или друго. Като отворя query-то немския Аксес при мен го интерпретира на Jahr (аналога на Year), и мрънка, че не намира такава колонка. Промени името на полето на PubYear или нещо подобно.

Обектите в Аксес обикновено се именуват според вида им - qryBooks за query, frmBooks за формуляр и т.н. Сътветно формуляр с име books query е знак за лош дизайн, освен че е и подвежда - обектът с името не е query, а е формуляр.

Във формата използвай за имена на полетата други имена от тези на колонките в таблицата или query-тo, което ти е DataSource. Примерно ако в таблицата имаш поле BookId, то елемента, който е във формата, трябва да е нещо от рода на txtBookId, ако примерно се ползва TextControl, за да покажеш информацията от тази колонка от таблицата. Респективно ако ползваш ComboBox - cmbTextId
В противен случай, когато си в VBA едитора, през референцията с Ме.<нещоси> не е ясно дали референцираш полето от таблицата или формуляр контрол-а.

Във формата ти липсва BookId, за да можеш да референцираш директно към книгата, чието количество искаш да запиташ.

Ето ти идея за бутона:

Код: Избери всички

Private Sub btnReStock_Click()
Dim qty, msgtext
qty = DFirst("AvailableQuantity", "books", "BookID=" & Me.txtBookID)

Select Case qty
    Case qty < 5
        If MsgBox("Iskate li da generirate nova porychka?", vbInformation + vbOKCancel, "Nova porychka") = vbOK Then
            msgtext = "Kolichestvoto na kniga " & Me.txtTitle & " e izcherpano"
            DoCmd.SendObject acSendQuery, "query books", acFormatXLS, "sales@izmislendostavchik.com", , , "Nova zajavka", msgtext       
        End If
    Case Else
        MsgBox "Ne e neobhodimo zarezdane v momenta", vbOKOnly + vbInformation, "Info"
End Select

End Sub


Освен това не става ясно защо трябва да бъде генериран мейл с всички записи от "books query" - логично е да се генерира само мейл за книгата, която току-що е била проверена?
И в books query имаш твърди параметри "Година 2010 ИЛИ цена по-голяма от 10", които нямат никакъв смисъл или поне ги няма в условието на задачата?


Потребителски аватар
streetracer1
Мнения: 460
Регистриран на: Вто 05 ное 2013 19:15
Автомобил: Seat Ibiza
Двигател: BMT 2008г
Местоположение: Враца/София

Re: Малко помощ по Майкрософт Аксес

Мнениеот streetracer1 » Сря 30 апр 2014 14:35


Всичко, което е в работната книга е от няколко задачи, които трябваше да се направят съответно на различни упражнение. Това последното, което не успявам да направя е поредната задача, която трябва да се извърши върху тази книга. Честно да си кажа почти нищо не схванах... Ако ще е от полза... ето клип с демонстрация какво се иска от мен: http://www.youtube.com/watch?v=eP7h5a0QRw4


Потребителски аватар
Чудомир
Мнения: 2856
Регистриран на: Вто 18 юли 2006 0:37
Автомобил: Passat 5.5 + Caravelle T4
Двигател: 03 V6 AMX + 97 VR6 AES
Местоположение: Нейде из Швабско или под тепетата

Re: Малко помощ по Майкрософт Аксес

Мнениеот Чудомир » Сря 30 апр 2014 17:52


Няма как да ти обясня как се прави френски гараж, когато единствения ти допир с автомобили е бил с автоматици, и то в ролята на пътник :c020

Втори опит, накратко: За да фунционират нещата добре, има някакви основни начини как се прави една такава "работна книга" (тва от Workbook ли е превод? Щото ако да, то този термин го няма в Аксес, а до колкото знам само в Ексел)

Тези основни начини (или за да останем при директен превод от английски: добри практики) са козметични и нещата ще тръгнат и без тях. липсата им обаче прави по-нататъшното развитие на раб. книга трудоемко. Затова ти казах, че има неща за доизглаждане.

За да си решиш проблема бързо, вкарваш един бутон във формата, след като си минал в Design View s триъгълника горе вляво. После го именуваш btnReStock в Properties (през десен клик върху бутона стигаш до тях). После на Event кликаш до OnClick и копираш кода, който съм пуснал.

Най-накрая трябва да добавиш поле BookId във формата през менюто Add existing field и да го преименуваш на txtBookId.

Не е 100% това, което се вижда на видеото, но да речем едни 85-90% ги покриваш.

П.С. Обозначенията на английски може да не са точни, защото карам по спомен - при мен софтуера е на немски.


Потребителски аватар
streetracer1
Мнения: 460
Регистриран на: Вто 05 ное 2013 19:15
Автомобил: Seat Ibiza
Двигател: BMT 2008г
Местоположение: Враца/София

Re: Малко помощ по Майкрософт Аксес

Мнениеот streetracer1 » Сря 30 апр 2014 19:35


Благодаря ти! Има напредък. Значи като цяло с щракването изкарва съобщение, че няма нужда да се зарежда, но при книга под 5 броя си изкарва същото, не пуска нито друго съобщение, нито някаква форма за поръчка. :rolleyes


Потребителски аватар
Чудомир
Мнения: 2856
Регистриран на: Вто 18 юли 2006 0:37
Автомобил: Passat 5.5 + Caravelle T4
Двигател: 03 V6 AMX + 97 VR6 AES
Местоположение: Нейде из Швабско или под тепетата

Re: Малко помощ по Майкрософт Аксес

Мнениеот Чудомир » Сря 30 апр 2014 20:32


Първо заменяш стария код с този:

Код: Избери всички

Private Sub btnReStock_Click()
Dim qty, msgtext

Me.Refresh

qty = DFirst("AvailableQuantity", "books", "BookID=" & Me.txtBookID)

If IsNull(qty) Then
    MsgBox "Neuspeshen opit za ustanovjavane na broikata"
    Exit Sub
End If

Select Case qty
    Case 1 To 5
        If MsgBox("Iskate li da generirate nova porychka?", vbInformation + vbOKCancel, "Nova porychka") = vbOK Then
            msgtext = "Kolichestvoto na kniga " & Me.Title & " e izcherpano"
            DoCmd.SendObject acSendQuery, "books query", acFormatXLS, "sales@izmislendostavchik.com", , , "Nova zajavka", msgtext
        End If
    Case Else
        MsgBox "Ne e neobhodimo zarezdane v momenta", vbOKOnly + vbInformation, "Info"
End Select

End Sub


После:
140430_201508_60.jpg


1 - кликаш
2 - трябва от 1 да издърпаш с мишката BookID към формата
3 - кликаш
4 - преименуваш както е показано

Стана ли да реагира при по-малко от 5?


Потребителски аватар
streetracer1
Мнения: 460
Регистриран на: Вто 05 ное 2013 19:15
Автомобил: Seat Ibiza
Двигател: BMT 2008г
Местоположение: Враца/София

Re: Малко помощ по Майкрософт Аксес

Мнениеот streetracer1 » Чет 01 май 2014 10:08


Направо заспа! :bowdown :bowdown Голямо благодаря, колега! Само ще си ги направя на български известията и така го оставям. С макроси си играх и стигнах до положение, в което проверява и извежда съобщения, но при под 5 броя не успях да създам мейл. Така го оставям и отново ти благодаря! :love.vwclub


Потребителски аватар
Чудомир
Мнения: 2856
Регистриран на: Вто 18 юли 2006 0:37
Автомобил: Passat 5.5 + Caravelle T4
Двигател: 03 V6 AMX + 97 VR6 AES
Местоположение: Нейде из Швабско или под тепетата

Re: Малко помощ по Майкрософт Аксес

Мнениеот Чудомир » Чет 01 май 2014 11:39


Честито! Ще черпиш.... :icon_lol Сега ако промениш в заглавието Аксес на Access цена няма да имаш.
Успех!


Потребителски аватар
streetracer1
Мнения: 460
Регистриран на: Вто 05 ное 2013 19:15
Автомобил: Seat Ibiza
Двигател: BMT 2008г
Местоположение: Враца/София

Re: Малко помощ по Microsoft Access

Мнениеот streetracer1 » Чет 01 май 2014 12:40


:bowdown Готово е и заглавието :mhihi



Върни се в “ОФФ-Топик - електроника, техника, обзавеждане”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 21 госта