» »

[Access 2007]

[Access 2007]

dusangonzo ::

Bom zelo kratek...

Mi lahko kdo pomaga kako narediti gumb na obrazcu ki bo poslal report preko maila? U bistvu to že imam, rabim pa, da se prejemnikov e-mail naslov črpa iz poizvedbe in ne da ga moram direktno vpisati.

Hvala vsem!
8rda+ rev 2.1 , XP 1662@2312(Thorton) , 1GB Geil Value PC3200 , Gf 6600GT

dusangonzo ::

Tukaj je še koda gumba:

Private Sub Command23_Click()
On Error GoTo Err_Command23_Click

Dim stDocName As String
Dim db As DAO.Database
Dim rec As DAO.Recordset
Dim strSQL As String
Dim strEmailAddresses As String

Set db = CurrentDb()

strSQL = "SELECT MailZap FROM ProsnjeStefan WHERE Mailzap = '" & ProsnjeStefan & "'"

Set rec = db.OpenRecordset(strSQL, dbOpenDynaset)

'("SELECT InStock FROM tblInventory WHERE tblInventory.BarCode= " & [Forms]![frmOrderItems]![txtBarCode1] & ";")
'("SELECT InStock FROM tblInventory WHERE (((tblInventory.BarCode)=[Forms]![frmOrderItems]![txtBarCode1]));")


'Do Until rec.EOF
'strEmailAddresses = strEmailAddresses & ";" & rec![Email Address]
'rec.MoveNext
'Loop


DoCmd.RunCommand acCmdRefresh
stDocName = ChrW(79) & ChrW(100) & ChrW(103) & ChrW(111) & ChrW(118) & ChrW(111) & ChrW(114) & ChrW(32) & ChrW(110) & ChrW(97) & ChrW(32) & ChrW(112) & ChrW(114) & ChrW(111) & ChrW(353) & ChrW(110) & ChrW(106) & ChrW(111) & ChrW(32) & ChrW(352) & ChrW(116) & ChrW(101) & ChrW(102) & ChrW(97) & ChrW(110)

DoCmd.SendObject acReport, stDocName, acFormatPDF, strEmailAddresses



Exit_Command23_Click:
Exit Sub

Err_Command23_Click:
MsgBox Err.Description
Resume Exit_Command23_Click

End Sub

Ne ve noben pomagati ali vprašanje ni dovolj jasno zastavljeno?

Ne ve noben pomagati ali vprašanje ni dovolj jasno zastavljeno?

Ne ve noben pomagati ali vprašanje ni dovolj jasno zastavljeno?
8rda+ rev 2.1 , XP 1662@2312(Thorton) , 1GB Geil Value PC3200 , Gf 6600GT

Zgodovina sprememb…

urosz ::

Da ne bom odpiral nove teme, bom tule vprašal..

V Accessu imam sledeče tabele:

Razred(IDRazred, IDŠola, imeRazreda, razrednik)
Dijak(IDDijak, IDRazred, ime, priimek, datumRojstva)
Ocena(IDOcena, IDRazred, IDDijak, IDpredmet, Ocena, Datum, Vrsta)

V obrazcu za dodajanje ocen najprej uporabnik preko seznama, ki mu ga ponudi Access izbere Razred, v katerem se nahaja Dijak.

Nato pa izbere še Dijaka, ki prejme oceno. Dijak pa mora biti seveda iz razreda, ki ga je izbral en stolpec prej. Imam problem, kajti ne vem napisat SELECT stavka za vir vrstic.
SELECT Dijak.IDDijak, Dijak.ime, Dijak.Priimek FROM Dijak, Ocena WHERE OCENA.IDRazred=Dijak.IDRazred; 


To ne deluje. Ponudi namreč dijake iz vseh Razredov, nekje celo podvojene vnose :S

Neke vrste WHERE Dijak.IDRazred=thisRow.IDRazred bi rabil.

Zgodovina sprememb…

  • spremenil: urosz ()

ZePe ::

Hmmm... Kaj ne gre tukaj za SubForm, kjer mora Seznam dijakov biti povezan z Seznamom Razredov preko Dijak.IDRazred = Razred.IDRazred.

Sledi še en SubForm Ocena, ki je z nadrejenim Dijak povezan preko Ocena.IDDijak = Dijak.IDDijak.
Moj blog: http://office.blog.siol.net in http://www.finance.si/blog.php?id=25

dolenc ::

Tko kot maš select napisan more delat, samo glej da so pravilni podatki glede na zgradbo tabel in pa pravilno postavljen ključ ter da je ključ primari in unique. Sem si sestavil poiskusno bazo, pa je tudi meni ubrisalo več zapisov, potem se pa kluče poštimal pa dela :)

Če si pa z VBA pomagaš(predvidevam da v formi seznam misliš combobox, ki u lahko kak event določiš) se lahko pa tud na trenutno vrednost sklicuješ, samo potem moraš select sestavit v VBAju in mu daš paš WHERE dijak.IDdijak = me.PoljeIDdijak.

urosz ::

Ključi so postavljeni vsepovsod, so primarni in unikatni. Nevem kaj naj nardim :S

dolenc ::

Dej uplovdej fajl nekam pa mi pošli link, če bom mel čas pogledam, če se da kej nardit :)

urosz ::

http://www.filedropper.com/e-redovalnica

hvala že vnaprej, če se bo dalo nardit

v tabeli Ocena imam ta problem

urosz ::

ok sem že malo bližje rešitvi s pomočjo tega:

Private Sub cboIDRazred_AfterUpdate()
    Me.cboIDDijak.RowSource = "SELECT IDDijak, ime, priimek FROM Dijak WHERE Dijak.IDRazred=Me.cboIDRazred"
    
    Me.cboIDDijak = Me.cboIDDijak.ItemData(0)
End Sub


se pravi, ko prvemu komboboksu določiš vrednost, se v drugem spremeni RowSource.
Ampak ko določim vrednost, me pol še 1x vpraša po vrednosti parametra in moram napisati isto, kot sem prej že izbral..



In zdaj če vpišem parameter, pol v drugem spustnem seznamu (IDDijak) prikaže pravilne možne izbire.. ampak jaz bi seveda rad brez tega sporočila, da tale parameter sam prebere iz drugega comboboxa..

edit: rešil problem končno.. malo spremenjena vba koda, čeprav nevem v čem je sploh razlika med staro in novo. če ve kdo, naj mi prosm pove :D v čem je fora teh "& _"

Private Sub cboIDRazred_AfterUpdate()
    Me.cboIDDijak.RowSource = "SELECT IDDijak, ime, priimek FROM" & _
                " Dijak WHERE Dijak.IDRazred = " & Me.cboIDRazred & _
                " ORDER BY priimek"
    Me.cboIDDijak = Me.cboIDDijak.ItemData(0)
End Sub

Zgodovina sprememb…

  • spremenil: urosz ()

dolenc ::

No lepo da si pogruntal, jaz sem ti pa ravno odgovor hotel napisat :)

Upam da veš kje je bila fora, v tistem selectu s kerim si najprej mislil se sklicuješ na splošne vrednosti(vse) iz tabele, moreš mu pa določit samo tisto vrednost, ki je v polju, kar si tudi naredil.

Select je pač select :), sicer pri accesu lahko veliko stvari delaš znotraj tega ampak vse pa pač ne, polja iz forme mu ne moreš notri dajat. Tako da narediš "select neki where a = " & vrednostIzPolja in če je vednostIzPolja 1, bo on to razumel kot select neki where a = 1. Ker drugače bi prebral vse skupaj kot string in bi namesto števila vzel kot vrednost ime polja

To kaj ti kašna stvar naredi lahko tudi tako probaš, v tisto okno debugger(ctrl+g) vtipkaš:
?"SELECT IDDijak, ime, priimek FROM Dijak WHERE Dijak.IDRazred= " & Me.cboIDRazred
In pritisneš enter, pa ti bo izpisalo kako to vidi access, ful priročna zadeva tud če kako spremeljivko iščeš :)

Pa če boš hotel kdaj kake querije sprobat, pač neseš kodo ki ti jo debuger dobi v nek nov query pa daš run, ker vedno access ne javi napake, če je na nivoju sqla, pa potem tam vidiš kaj bi rad, če pa dela pa vidiš kašen rezultat ti da.

Pa veliko sreče pri projektu :)

Zgodovina sprememb…

  • spremenil: dolenc ()

urosz ::

vračam se z novim problemom

Imam tabele, kjer gre za relacijo mnogo proti mnogo:

Predmet(IDPredmet, imePredmeta)
Razred(IDRazred, imeRazreda,..)
PredmetRazred(IDPredmet, IDRazred)

Imam obrazec za vnašanje teh relacij, v katerem sta 2 comboboxa.. Prvi je za izbiranje razreda, drugi pa za izbiranje predmeta. Hočem narediti, da uporabnik ne bo mogel vnesti več relacij, ki so že vspostavljene, zato sem spisal sledeč SQL stavek za vir vrstic comboboxa za izbiro predmeta:

cboImePredmeta.RowSource = "SELECT DISTINCT imePredmeta FROM PredmetRazred, Predmet WHERE Predmet.IDPredmet NOT IN" & _
                        " (SELECT IDPredmet FROM PredmetRazred WHERE IDRazred= " & Me.txtRazred & ")"

// v Me.txtRazred je ID izbranega razreda


Ko še ni nobenih zapisov v tabeli PredmetRazred, zadeva ne deluje. Ko nardim prvi vpis (ročno :S), potem sta od drugega vpisa naprej comboboxa lepo sinhronizirana in delujeta.

Zgodovina sprememb…

  • spremenil: urosz ()

urosz ::

to sem nekak rešil recimo..

eno vprašanje še mam, ki je malo lažje.

imam tabelo ocene.. kako bi naredil poročilo, ki bi mi naprimer prikazalo ocene le za dijaka, ki ga izberem

ali pa recimo samo za 1 predmet ali kaj takega..

vglavnem Kako filtrirati poročilo?

dolenc ::

Poročilo je ponavadi fiksno in izpiše neke vrednosti iz tabele ali sql procedure, kaj ti izpiše moreš pa določit prej, koker jst vem je samo poročilo fiksno in tam gor ne moreš filtrirat, poročilo lahko pa sestaviš z neko poizvedbo.(res pa da nisem veliko z poročili delal v accessu, kar jaz delam gre kar preko sqla in se lahko motim)

Če želiš nekaj izbrati, pomeni da boš moral narediti spet nek obrazec. In če boš želel dostopat do vrednosti iz polja se boš moral (spet) poslužit VBAja.
Spet narediš tako kot zgoraj, Select... Where dijak = " & poljeDijak.

Lahko tako napišeš ga ti VBA sestavi in naredi nek query, iz obrazca, kateri se uporabi potem za izpis poročila.

Zgodovina sprememb…

  • spremenil: dolenc ()

urosz ::

sem rešil kot je mislim da najboljše.. sem najprej mislil narediti tako, da te pred odprtjem poročila povpraša po nekem parametru (naprimer imenu al nekaj) in ti potem access kreira ustrezno poročilo. ampak sem nekako ugotovil, da mi bolj ustreza, da poročilo v začetku pokaže vse zapise, nato pa uporabnik enostavno uporabi besedilne filtre, ki so že vgrajeni v sam access, saj so le ti narejeni prav z tem namenom.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Sql] Poizvedba

Oddelek: Programiranje
111717 (1368) ales85
»

Matura 2 predmet E-redovalnica

Oddelek: Programiranje
101381 (1015) FiR3F0X
»

Statistika dijakov, pomoc

Oddelek: Programiranje
211677 (1161) Mitja Bonča
»

VC# insert into oledb ne deluje

Oddelek: Programiranje
191541 (1312) Good Guy
»

Insertanje v tabelo z nekim pogojem (PHP&MySQL)

Oddelek: Izdelava spletišč
91184 (1132) jure1825

Več podobnih tem