interogare

Ce este nou in Microsoft Access 2013?
Informatii despre cum se utilizeaza Microsoft Access 2013.
Baze de date, Interogari, Formulare, Rapoarte, etc
Închis
spike2000
Mesaje: 3
Membru din: Dum Apr 10, 2016 6:15 pm

interogare

Mesaj de spike2000 » Dum Apr 10, 2016 6:28 pm

Buna ziua , am si eu o o baza de date , o tabela cu nume angajati si o alta tabela in care am 3 campuri unde pot fi angajatii de genul lider echipa, membru 1 si membru 2 . as vrea sa calculez pentru fiecare nume din prima tabela cu angajatii de cate ori a fost lider ( inmultit cu 1 ) adunat de cate ori a fost membru 1 sau membru 2 ( inmultit cu 0.5) , sa apara intr-o coloana ca total puncte. imi dati o idee cum sa fac? cu interogari? multumesc mult

Tzica
Mesaje: 639
Membru din: Sâm Aug 11, 2012 10:52 pm

Re: interogare

Mesaj de Tzica » Lun Apr 11, 2016 6:24 pm

Desigur, interogarile sunt ...baza pentru calcule.Dar, fireste, mai conteaza si unde dorim , daca dorim, afisate respectivele valori (formular..raport).Atunci se mai poate "umbla" la un Iif, sau un Select Case etc...in fine.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

spike2000
Mesaje: 3
Membru din: Dum Apr 10, 2016 6:15 pm

Re: interogare

Mesaj de spike2000 » Lun Apr 11, 2016 7:49 pm

Multumesc mult pentru raspuns. am atasat baza de date a mea , as vrea ca pentru fieacre nume din tabela "nume " sa faca count pentru fiecare document la care a participat (ca lider de echipa 1 punct si ca membru de echipa 0.5 puncte si sa le adune in final pe o coloana) . ma poti ajuta pe exemplu meu ?
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Tzica
Mesaje: 639
Membru din: Sâm Aug 11, 2012 10:52 pm

Re: interogare

Mesaj de Tzica » Mie Apr 13, 2016 1:04 pm

Lol…aceasta speta, m-a facut sa retraiesc anii tineretii, cand dispretuiam QBE-ul…am pus la paranteze patrate, de vad numai patrate in fata ochilor…asta pentru ca ai complicat-o cu ultima postare !!
In fine, sper ca cele ce urmeaza sa nu fie interpretate ca o luare pe sus, sau cum zic usan-ii drept patronise.Dar…asemenea atentionari musai sa fie facute, cand citim ca “am atasat baza de date a mea “ ..deci, pe scurt:
1.In MsAcces, stocam date in tabele, date pe care le introducem cu ajutorul formularelor, si extragem informatii prin rapoarte (care au in spate interogari);
2.Respectiva aplicatie nu respecta regulile unei BD, normalizare si legaturi intre tabele prin chei straine;
3.E mai de folos sa scriem numele campurilor si/sau obiectelor BD , intr-un singur cuvant.Altfel, spatiile goale ne dau batai de cap, si cand le folosim intr-o formula musai sa la inchidem in paranteze patrate.Pentru estetica…avem etichetele (labels).
Lincuri(selectiv) :
1. RelatiiTabele
2. OrganizareDate
3. Normalizare1
4. Normalizare2
5. ImbricareCriteriiInGhilimele (Despre folosire “simple quote marks “ , “ double quote marks “ si “diez”…Pentru ca mi-a dat batai de cap sa fac calcule dupa text (are o anomalie pe undeva..ca in loc de 0,5..a trebuit sa folosesc ½ !!)
6. CrosstabTotalRow
7. CrossTabMultipleColumnValues

Deci una peste alta, avand in vedere dispunerea datelor, se putea rezolva foarte simplu in excel cu un count if (s) si /sau Sumproduct, iar daca s-ar fi respectat regulile de constructie a unei BD, o simpla interogare ar fi dat rezolvarea mult mai elegant (mai mult timp am fi pierdut cu design-ul raportului).
E o dovada, ca in materie de calcule, daca nu se respecta regulile…”in materie de calcule Acces nu are flexibilitatate Excell” am citat pe DrAcces.Altfel,..si io sunt contra..excelizarii MsAcces.Adica, o unealta trebuie sa fie folosita pentru scopul in care a fost creata…si Excell si Acces..sunt unelte, care fiind produse de aceeasi firma..clar colaboreaza foarte bine intre ele (sau cu alte aplicatii gen posta electronica).
Dar…sa purcedem:
1.
as vrea sa calculez pentru fiecare nume din prima tabela cu angajatii de cate ori a fost lider ( inmultit cu 1 ) adunat de cate ori a fost membru 1 sau membru 2 ( inmultit cu 0.5) , sa apara intr-o coloana ca total puncte.
Zic eu ca “Nume Query”, indeplineste aceasta cerinta.
2.De dragul unei dezbateri teoretice: Excelizarea Acces (complicatenia) a fost generata de :
as vrea ca pentru fieacre nume din tabela "nume " sa faca count pentru fiecare document la care a participat ..... si sa le adune in final pe o coloana)
” adica....a mai aparut un criteriu !.Cei drept aduce mai multa calitate informatiei.
Asta m-a facut sa “rascolesc “ forumurile (eram sigur ca link-urile respective sunt in Acces2007 !)…si…nu mi-a iesit Unionul cum as fi dorit (adica sa fi scris in sql-eza nu ..sa pun numele interogarilor).
De remarcat ca un total de row (rand) ar fi putut fi obtinut si prin folosirea simboluli Sigma din grila de proiectare…dar…organizarea datelor ne impiedica sa folosim aceasta facilitate.
Rezultatul este “qryUnionScorTotal”…se remarca prin simbolul specific (jumate de Audi !) si e alcatuita din uniunea qrycrosCodDocument & qrycrosTotalScor..unde avem totalul/punctajul proiectului (vedem cat ne-a “costat” un proiect) pe coloana iar in randul de GrandTotal avem totalurile proiectelor si a angajatilor , conform nume coloana.
Sincer…e o provocare sa folosim asa Acces.Practic trebuie sa intervenim in mediul SQL sa “fortzam numele de coloana (clauza IN)….dar…nu cred ca e cea mai eficienta metoda / tehinca de a rezolva respective problema/speta.Desi sunt fan Acces....totusi..unele spetze..trebuie lasate in seama ExcelL, din moment ce acelasi rezultat il putem obtine cu un efort mult mai mic. :-)
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

spike2000
Mesaje: 3
Membru din: Dum Apr 10, 2016 6:15 pm

Re: interogare

Mesaj de spike2000 » Mie Apr 13, 2016 8:39 pm

Multumesc mult si scuze dar nu am stiu ca este asa de complicat . e clar ca vina e a mea , e adevarat ca vreau prin form sa introduc valorile si prin report sa afisez date. numele campurilor le-am dat cam aiurea, am vazut si eu ca nu e ok sa aiba spatii ( sunt incepator) , promit sa studiez mai mult . Ma intreb cum ar fi trebuit sa creez BD ca sa fie mai simplu? cum ai vedea relatiile dintre tabele ? poti sa-mi dai niste sugestii? multumesc mult ptr toot !

Tzica
Mesaje: 639
Membru din: Sâm Aug 11, 2012 10:52 pm

Re: interogare

Mesaj de Tzica » Joi Apr 14, 2016 10:20 am

În condițiile astea, singura șansă pe care o ai este să pui mâna și să înveți. Prima dată organizarea datelor, apoi tipuri de obiecte în formulare, interogări, legarea lor cu formulare din care să preia filtrele pe care vrei sa le impui....Spuneai că vrei să faci o bază complexă. Nu-ți va ieși nimic și vei renunța dezamăgit la access dacă nu te apleci serios asupra lui.
E greu, dar e și frumos. Sa vezi că din mâna ta a ieșit o aplicație ...... este ceva.
( Mesersmith Lun Feb 08 2016 10:11 pm

Mai simplu, mai clar si/sau mai complex decat citatul de mai sus..zau ca io nu stiu sa ma exprim.
Am pus niste lincuri mai sus, mai adaug doua:
1 . LectiiGratuiteAcces
2. DataBaseNormalizationBasics
(desi, ca sa o spunem pe aia dreapta, daca citesti cele scrise de DrAcces , link -ul nr . 2 de acum e cam redundant).
Mai adaug si un link neaparat necesar, si anume conventiile de nume in MsAcces (baze de date in general):
LeszynskyNamingConvention
Deci, cam asta e marele "neajuns" cand vrem sa lucram , sa ne folosim de Acces....avem de facut muuulta lectura in particular.
Concret, la aplicatia urcata :
1. E ok tabelul nume.Sa incercam sa-l denumim, conform Leszynski, tblNume ( sau tblnume);
2. Legatura intre tblNume si tblProiecte ( e o lista de cuvinte rezervate Acces, de exemplu "date".Folosit asa...aplicatia va interpreta , intr-un viitor cand vom dezvolta BD-ul ca e vorba de un tip de data calendaristica)..in fine).Legatura dintre tblNume si tblProiecte o facem prin a defini un camp/field idnumeprenume (acesta este numele campului!, daca dorim sa fie afisat ca si NumePrenume il trecem in proprietatea Caption) in tblProiecte, iar tipul va fi Number.Aici se vor stoca NumelePrenumele participantilor.Cum facem legatura ?? Pai...dupa definirea campului, mergem in meniul DatabaseTools> Relationship. Afisam tabelele si "agatam" campul cheie primara din tblNume si il "dragalim" in campul intitulat idnumeprenume din tblProiecte (de regula io cheile primare din tabel le scriu cu litere mari de ex IDNume , IDProiect, iar cheile straine cu litere mici: idnumeprenume).In fine...nu are rost sa reiuau aici ce se poate citi/invata mult mai elegant din lincurile date.
Deci in tblProiecte ar fi trebuit sa "vad " ceva de genul" : Cheia Primara 1 (numar), iar la Nume prenume ..tot o cifra , si nu numeparticipantului.
Deci...rabdare, drag de citit...si multa putere de munca. :-)

LE: Nu e chiar lincul pe care il cautam, dar iaca mai de la pagina 10 sunt exemple despre normalizare (bine tot articolul e interesant) :
UnderstandingNormalization

Închis

Înapoi la “Intrebari despre Access 2013”