Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

E, stvarno mi sad treba pomoć (po mogućnosti STRUČNA !)

[es] :: Access :: E, stvarno mi sad treba pomoć (po mogućnosti STRUČNA !)

[ Pregleda: 2387 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Boki1974
Tuzla (BiH)

Član broj: 42849
Poruke: 9
*.bih.net.ba.



Profil

icon E, stvarno mi sad treba pomoć (po mogućnosti STRUČNA !)28.12.2004. u 15:45 - pre 214 meseci
Pozdrav svima!

Imam problem, koji rješavam već dugo, ali bez uspjeha. Želim ga podijeliti i sa vama, i zatražiti pomoć i sugestije u njegovom rješavanju. Naime, pokušavam stvoriti jednu bazu podataka, koja bi, na primjer, sadržala podatke o letovima između aerodroma.

Kreirao sam naredne table:

- „AERODROMI“, gdje je svaki aerodrom predstavljen id-om ( AerodromID ) i imenom aerodroma ( ImeAerodroma ).
- „AVIOKOMPANIJE“, gdje je svaka aviokompanija predstavljena id-om ( KompanijaID ) i imenom kompanije( ImeKompanije )
- „TIPOVI AVIONA“, gdje je svaki avion predstavljen id-om ( AvionID ) i opisom aviona ( TipAviona )
- „TARIFE“, gdje je svaka tarifa predstavljena id-om ( TarifaID ) i opisom tarife ( OpisTarife )
- „TARIFE NA RELACIJAMA“, gdje su sadržani id relacije ( RelacijaID ), id tarife ( TarifaID ) i cijena ( Cijena )

1. Želim da kreiram glavni formular, na kojem će se putem selekcije iz combo-boxova „POLAZIŠTE“ I „DOLAZIŠTE“ odrediti polazni i dolazni aerodromi, nakon čega će na subformularu koji je uključen u ovaj glavni formular biti izlistane sve mogućnosti za datu relaciju. Kako ? Koje procedure moraju biti izvedene, da bi nakon selektiranja cijela baza bila pročešljana i traženi let ili letovi bili pokazani na subformularu ?

Slikovito:

1. ) Selekcija polaznog i dolaznog aerodroma

Polazni aerodrom: Frankfurt Dolazni aerodrom: Amsterdam


2. ) Nakon selekcije, baza biva pročešljana i na subformularu dobivam rezultate o traženom letu :



Kod leta Kompanija Avion Polazak Dolazak Trajanje leta Servis

LH500 Lufthansa A320 08:00 09:00 01:00 Breakfast
KL300 KLM A319 10:00 11:00 01:30 Breakfast


Znači, koja je to čarobna procedura kojom mogu „natjerati“ Access da prečešlja bazu i da mi izbaci tražene podatke ?
Prikačeni fajlovi
 
Odgovor na temu

BiloKoje
Beograd

Član broj: 40147
Poruke: 387



+4 Profil

icon Re: E, stvarno mi sad treba pomoć (po mogućnosti STRUČNA !)28.12.2004. u 17:36 - pre 214 meseci
Nema čarobne formule, ovo je malo ozbiljnije, ali mi strašno liči na primer iz jedne kjige (relacije, normalizacije i sl.). Knjiga mi nije pri ruci, ako bude interesantno sutra, kažem ti autora i dr.
 
Odgovor na temu

Boki1974
Tuzla (BiH)

Član broj: 42849
Poruke: 9
*.as54.tz.bih.net.ba.



Profil

icon Re: E, stvarno mi sad treba pomoć (po mogućnosti STRUČNA !)28.12.2004. u 19:25 - pre 214 meseci

Citat:
BiloKoje: Nema čarobne formule, ovo je malo ozbiljnije, ali mi strašno liči na primer iz jedne kjige (relacije, normalizacije i sl.). Knjiga mi nije pri ruci, ako bude interesantno sutra, kažem ti autora i dr.


************************************************************
Prvo, da ti se zahvalim, jer si probio led, obzirom, da je ovo izgleda malo komplikovanija stvar !

Da prvo sebi nešto razjasnim, a možda tebe i ostale koji se pozabave ovim navede na razmišljanje ( by the way, ja lupam glavu već mjesecima): ono što je ključno, jeste da nakon selekcije polaznog i dolaznog aerodroma putem combo-boxova, MORA BITI POKRENUTA PROCEDURA, koja će uputiti Access da češlja, najvjerovatnije query, koji sadrži sve tražene podatke. Taj query je sigurno stvoren iz 4 tabele: POLAZNI AERODROM, DOLAZNI AERODROM, KOMPANIJE, TIPOVI AVIONA, I TARIFE NA RELACIJAMA.

Eh, sad...

Idući prema mojoj inuticiji, morao bi se koristiti statement koji otprilike ovako izgleda:

Select * FROM tbl WHERE PolazišteID="FRA" & DolazišteID="AMS"

Samo...Svaki put, kada putem combo-boxova selektiram nova polazišta i dolazišta, ovaj gore navedeni statement će morati sadržati NOVE vrijednosti između navodnih znakova, dakle ne više FRA i AMS ! Šta se onda mora koristiti na poziciji, gdje idu kodovi aerodroma ?

U biti, ovdje postoji jedan problem, koji se grana na više njih. Samim tim, izgleda da imamo mnogo gradiva za razmišljanje :-)

 
Odgovor na temu

rribaric
romano ribarić
rijeka

Član broj: 31410
Poruke: 165
*.dialin.iskon.hr.



Profil

icon Re: E, stvarno mi sad treba pomoć (po mogućnosti STRUČNA !)28.12.2004. u 22:43 - pre 214 meseci
Neznam koliko ću ti moć pomoć jer vidim da ovo treba postavit od samog početka.Ali koliko vidim tebe muči I pitanje kako ćeš u sql izkazu promijenit tražene vrijednosti.
Ovo ti je jedan kod koji meni iz dva kombo boxa pretražuje bazu na osnovu unijetih kriterija.U prvi combobox cbological upisujem gdje (koju kolonu)pretražujem.A u drugom comboxu upisujem što tražim.
To bi moglo biti riješenje za dio tvog problema.Kako promijenit vrijednosti u sql izrazu.
[blue
“Samo...Svaki put, kada putem combo-boxova selektiram nova polazišta i dolazišta, ovaj gore navedeni statement će morati sadržati NOVE vrijednosti između navodnih znakova, dakle ne više FRA i AMS ! Šta se onda mora koristiti na poziciji, gdje idu kodovi aerodroma ?”]

Znači da u formi imaš dva comboboxa a u kodu ih onda stavi u ovisnosti o sql izkazu.
Ja ti ovako za sad mogu pomoć.Ti dalje to radi pa navedi konkretni problem a onda ćemo probat nać to riješenje!

Private Sub cmdRunQuery_Click()
Dim strSQL As String

On Error GoTo Err_cmdRunQuery_Click
DoCmd.maximize
‘ako je vrijednost u comboxu “” prekida izvršenje
If IsNull(Me!cboLogical) Or IsNull(Me!txtCostCenter) Then
MsgBox "NISTE UNIJELI KRITERIJ ZA PRETRAZIVANJE"
Exit Sub
End If

Rem MsgBox " tu sam " & Year([Datum Nabave]) & "unos" & Year(Me![txtCostCenter])
'*** create the string based on the information on the form
strSQL = "SELECT amortizacija.* FROM amortizacija WHERE "
If (Me![cboLogical] = "Naziv sredstva") Then
strSQL = strSQL & " LTRIM([Naziv sredstva]) like """ & Me![txtCostCenter] & """"
End If
If (Me![cboLogical] = "Konto") Then
strSQL = strSQL & "[konto] like """ & Me![txtCostCenter] & """"
End If
If (Me![cboLogical] = "Datum Nabave") Then
strSQL = strSQL & "Year([Datum Nabave]) like """ & Year(Me![txtCostCenter]) & """"
End If



'*** set the record source
Me.RecordSource = strSQL
Me.Requery

Me!txtCostCenter.DefaultValue = ""
Me!txtCostCenter.Enabled = False
Me!cboLogical.DefaultValue = ""
Me!cboLogical.Enabled = True
Me!txtCostCenter.InputMask = ""

Exit_cmdRunQuery_Click:
Exit Sub

Err_cmdRunQuery_Click:
MsgBox Err.Description
Resume Exit_cmdRunQuery_Click
End Sub

romano
 
Odgovor na temu

Boki1974
Tuzla (BiH)

Član broj: 42849
Poruke: 9
*.bih.net.ba.



Profil

icon Re: E, stvarno mi sad treba pomoć (po mogućnosti STRUČNA !)28.12.2004. u 23:31 - pre 214 meseci
Pozdrav !

Jako mi je drago, da je ovaj problem zainteresirao neke od nas. Zahvaljujem ti se na ovoj ideji, i pokušaću je primjeniti u praksi. Naravno, očekujem mišljenja i sugestije drugih članova i posjetilaca, tako da zajednički dođemo do najboljeg rješenja.

U svakom slučaju, ako bi želio, mogu ti putem mail-a proslijediti ono što već imam od baze, pa da i ti o tome daš svoje mišljenje.

Pozdrav !

Boris



***************************************************************
Citat:
rribaric: Neznam koliko ću ti moć pomoć jer vidim da ovo treba postavit od samog početka.Ali koliko vidim tebe muči I pitanje kako ćeš u sql izkazu promijenit tražene vrijednosti.
Ovo ti je jedan kod koji meni iz dva kombo boxa pretražuje bazu na osnovu unijetih kriterija.U prvi combobox cbological upisujem gdje (koju kolonu)pretražujem.A u drugom comboxu upisujem što tražim.
To bi moglo biti riješenje za dio tvog problema.Kako promijenit vrijednosti u sql izrazu.

“Samo...Svaki put, kada putem combo-boxova selektiram nova polazišta i dolazišta, ovaj gore navedeni statement će morati sadržati NOVE vrijednosti između navodnih znakova, dakle ne više FRA i AMS ! Šta se onda mora koristiti na poziciji, gdje idu kodovi aerodroma ?”

Znači da u formi imaš dva comboboxa a u kodu ih onda stavi u ovisnosti o sql izkazu.
Ja ti ovako za sad mogu pomoć.Ti dalje to radi pa navedi konkretni problem a onda ćemo probat nać to riješenje!

Private Sub cmdRunQuery_Click()
Dim strSQL As String

On Error GoTo Err_cmdRunQuery_Click
DoCmd.maximize

‘ako je vrijednost u comboxu “” prekida izvršenje
If IsNull(Me!cboLogical) Or IsNull(Me!txtCostCenter) Then
MsgBox "NISTE UNIJELI KRITERIJ ZA PRETRAZIVANJE"
Exit Sub
End If

Rem MsgBox " tu sam " & Year([Datum Nabave]) & "unos" & Year(Me![txtCostCenter])
'*** create the string based on the information on the form
strSQL = "SELECT amortizacija.* FROM amortizacija WHERE "
If (Me![cboLogical] = "Naziv sredstva") Then
strSQL = strSQL & " LTRIM([Naziv sredstva]) like """ & Me![txtCostCenter] & """"
End If
If (Me![cboLogical] = "Konto") Then
strSQL = strSQL & "[konto] like """ & Me![txtCostCenter] & """"
End If
If (Me![cboLogical] = "Datum Nabave") Then
strSQL = strSQL & "Year([Datum Nabave]) like """ & Year(Me![txtCostCenter]) & """"
End If



'*** set the record source
Me.RecordSource = strSQL
Me.Requery

Me!txtCostCenter.DefaultValue = ""
Me!txtCostCenter.Enabled = False
Me!cboLogical.DefaultValue = ""
Me!cboLogical.Enabled = True
Me!txtCostCenter.InputMask = ""

Exit_cmdRunQuery_Click:
Exit Sub

Err_cmdRunQuery_Click:
MsgBox Err.Description
Resume Exit_cmdRunQuery_Click
End Sub
 
Odgovor na temu

Boki1974
Tuzla (BiH)

Član broj: 42849
Poruke: 9
*.bih.net.ba.



Profil

icon Re: E, stvarno mi sad treba pomoć (po mogućnosti STRUČNA !)29.12.2004. u 16:07 - pre 214 meseci
Pozdrav !

Moram da kažem da je došlo do značajnog napretka, koji je djelimično uslovljen tvojim post-om. Međutim, napravio sam značajne promjene u konstrukciji rješenja ovog problema.

Evo o čemu se radi:

1. Kreirao sam tablu koja se zove Letovi, i koja sadrži SVE vrijednosti o jednom letu (LetID, Kompanija, Polazište, Dolazište, VrijemePolaska, VrijemeDolaska, TipAviona)

2. Napravio sam novi query pod nazivom Detalji letova i dodao gore navedenu tablu, ali nisam definirao nikakve vrijednosti u gridu. Snimio sam query.

3. Napravio sam prazan form i nazvao ga Letovi. Dodao sam u njega dva text-box-a koja sam nazvao txtStart i txtEnd. Zatim sam dodao komandno dugme, i nazvao ga cmdResults, sa caption.om "Pregled rezultata"

4. Zatim sam u kod-windows ubacio ovaj kod:

Function BuildSQLString(strSQL As String) As Boolean
Dim strSELECT As String, strFROM As String, strWHERE As String
strSELECT = "*"
strFROM = "[Letovi]"
strWHERE = " AND Polazište = [Forms]![Letovi]![txtStart]"
If Not IsNull(txtStart) Then strWHERE = strWHERE
If Not IsNull(txtEnd) Then strWHERE = strWHERE & " And Dolazište = [Forms]![Letovi]![txtEnd]"
strSQL = "SELECT" & strSELECT
strSQL = strSQL & "FROM" & strFROM
If strWHERE <> "" Then strSQL = strSQL & "WHERE " & Mid$(strWHERE, 6)
BuildSQLString = True
End Function

5. A, kod komandnog dugmeta, u rubriku On Click sam kao Event ubacio naredni kod:

Private Sub cmdResults_Click()
Dim strSQL As String
If Not BuildSQLString(strSQL) Then
MsgBox "Pojavio se problem pri kreiranju SQL stringa"
Exit Sub
End If
CurrentDb.QueryDefs("Detalji letova").SQL = strSQL
RefreshDatabaseWindow
DoCmd.OpenForm "Letovi", , acReadOnly
End Sub


Znači, sve super funkcionira ! Ubacim vrijednosti u text-boxove, pritisnem dugme " "Pregled rezultata", i dobijem izlistane vrijednosti.

Dakle...Jedan dio Sizifovog posla je riješen. Komentari ? Bolje solucije ?? Ideje ???
Tome se iskreno nadam !


******************************************************************
Znači da u formi imaš dva comboboxa a u kodu ih onda stavi u ovisnosti o sql izkazu.
Ja ti ovako za sad mogu pomoć.Ti dalje to radi pa navedi konkretni problem a onda ćemo probat nać to riješenje!

Private Sub cmdRunQuery_Click()
Dim strSQL As String

On Error GoTo Err_cmdRunQuery_Click
DoCmd.maximize

‘ako je vrijednost u comboxu “” prekida izvršenje
If IsNull(Me!cboLogical) Or IsNull(Me!txtCostCenter) Then
MsgBox "NISTE UNIJELI KRITERIJ ZA PRETRAZIVANJE"
Exit Sub
End If

Rem MsgBox " tu sam " & Year([Datum Nabave]) & "unos" & Year(Me![txtCostCenter])
'*** create the string based on the information on the form
strSQL = "SELECT amortizacija.* FROM amortizacija WHERE "
If (Me![cboLogical] = "Naziv sredstva") Then
strSQL = strSQL & " LTRIM([Naziv sredstva]) like """ & Me![txtCostCenter] & """"
End If
If (Me![cboLogical] = "Konto") Then
strSQL = strSQL & "[konto] like """ & Me![txtCostCenter] & """"
End If
If (Me![cboLogical] = "Datum Nabave") Then
strSQL = strSQL & "Year([Datum Nabave]) like """ & Year(Me![txtCostCenter]) & """"
End If



'*** set the record source
Me.RecordSource = strSQL
Me.Requery

Me!txtCostCenter.DefaultValue = ""
Me!txtCostCenter.Enabled = False
Me!cboLogical.DefaultValue = ""
Me!cboLogical.Enabled = True
Me!txtCostCenter.InputMask = ""

Exit_cmdRunQuery_Click:
Exit Sub

Err_cmdRunQuery_Click:
MsgBox Err.Description
Resume Exit_cmdRunQuery_Click
End Sub
 
Odgovor na temu

Boki1974
Tuzla (BiH)

Član broj: 42849
Poruke: 9
*.as54.tz.bih.net.ba.



Profil

icon Re: E, stvarno mi sad treba pomoć (po mogućnosti STRUČNA !)02.01.2005. u 13:31 - pre 214 meseci
Evo, ponovo jedan similaran problem, jer sa iskoristio sasvim drugačiju proceduru od do sada navedenih.

Opis:

Kreirao sam glavni formular, na kome postoji pet combo-boxova, i tri button-a (dugmeta).
Prvo komandno dugme ima naziv „Pretraži“, i dodjeljen mu je OnClick event.
Upravo kod tog OnClick eventa se pojavljuje jedan problem.

Slijedi kod :



Option Compare Database
Option Explicit

Private Sub Pretraži_Click()

Dim strSQL As String, intCounter As Integer
'Build SQL String
For intCounter = 1 To 5
If Me("Filter" & intCounter) <> "" Then
strSQL = strSQL & "[" & Me("Filter" & intCounter).Tag & "] " & " = " & Chr(34) & Me("Filter" & intCounter) & Chr(34) & " And "
End If
Next

If strSQL <> "" Then
'Strip Last " And "
strSQL = left(strSQL, (Len(strSQL) - 5))
'Set the Filter property
Forms![subLetovi].Filter = strSQL
Forms![subLetovi].FilterOn = True
Else
Forms![subLetovi].FilterOn = False
End If

End Sub

Private Sub Poništi_Click()

Dim intCouter As Integer

For intCouter = 1 To 5
Me("Filter" & intCouter) = ""
Next

End Sub

Private Sub Command30_Click()
DoCmd.Close acForm, Me.Form.Name
End Sub

Private Sub Form_Close()
DoCmd.Close acForm, "subLetovi"
DoCmd.Restore
End Sub

Private Sub Form_Open(Cancel As Integer)
DoCmd.OpenForm "subLetovi"
End Sub


Praktična posljedica ovog koda je da mi se istovremeno otvara i formular „subLetovi“ na kojem se ODMAH prikazuju SVI podaci o svim LETOVIMA. Znači: subformular je otvoren PRIJE nego što je primjenjen filter.

Kako je moguće ispraviti ovo ? Znači, kako je moguće prvo isfiltrirati podatke, a onda ih prikazati na form-u „subLetovi“ ?

Doduše, filter savršeno funkcionira. Samo je potrebno ili „sakriti“ subLetovi form za vrijeme pretraživanja, ili ga otvoriti praznog, a njegovo punjenje podacima usljeđuje nakon filtriranja.
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: E, stvarno mi sad treba pomoć (po mogućnosti STRUČNA !)05.01.2005. u 14:58 - pre 214 meseci
Kad otvaras formu sa letovima, orvori je kao Hidden
Code:

Private Sub Form_Open(Cancel As Integer)
DoCmd.OpenForm formname:="subLetovi",windowmode:=acHidden
End Sub

Onda je postavi da bude Visible nakon sto se odabere i sagradi filter. Dodao sam jednu liniju na kraj procedure Pretrazi_click.
Code:

Private Sub Pretraži_Click()
Dim strSQL As String, intCounter As Integer
'Build SQL String
For intCounter = 1 To 5
  If Me("Filter" & intCounter) <> "" Then
    strSQL = strSQL & "[" & Me("Filter" & intCounter).Tag & "] " & " = " & Chr(34) &   Me("Filter" & intCounter) & Chr(34) & " And "
  End If
Next

If strSQL <> "" Then
   'Strip Last " And "
   strSQL = left(strSQL, (Len(strSQL) - 5))
   'Set the Filter property
   Forms![subLetovi].Filter = strSQL
   Forms![subLetovi].FilterOn = True
Else
   Forms![subLetovi].FilterOn = False
End If

'Napravi subLetovi vidljivim
Forms("subLetovi").Visible=TRUE

End Sub




 
Odgovor na temu

Boki1974
Tuzla (BiH)

Član broj: 42849
Poruke: 9
*.bih.net.ba.



Profil

icon Re: E, stvarno mi sad treba pomoć (po mogućnosti STRUČNA !)06.01.2005. u 23:37 - pre 214 meseci
Pozdrav !

Moram se zahvaliti onim članovima ovog foruma koji su mi pokušali pomoći. Ali, evo, želim da kažem da je rješenje pronađeno ! Princip rješenja je sasvim drugačiji nego što je ovdje predloženo, i prilično je nesvakidašnji, malo korišten u praksi i kompliciran. Mada, važno je da se POKUŠA pomoći. Još jednom, hvala na dobrim namjerama !

**************************************************************



Citat:
Zidar: Kad otvaras formu sa letovima, orvori je kao Hidden
Code:

Private Sub Form_Open(Cancel As Integer)
DoCmd.OpenForm formname:="subLetovi",windowmode:=acHidden
End Sub

Onda je postavi da bude Visible nakon sto se odabere i sagradi filter. Dodao sam jednu liniju na kraj procedure Pretrazi_click.
Code:

Private Sub Pretraži_Click()
Dim strSQL As String, intCounter As Integer
'Build SQL String
For intCounter = 1 To 5
  If Me("Filter" & intCounter) <> "" Then
    strSQL = strSQL & "[" & Me("Filter" & intCounter).Tag & "] " & " = " & Chr(34) &   Me("Filter" & intCounter) & Chr(34) & " And "
  End If
Next

If strSQL <> "" Then
   'Strip Last " And "
   strSQL = left(strSQL, (Len(strSQL) - 5))
   'Set the Filter property
   Forms![subLetovi].Filter = strSQL
   Forms![subLetovi].FilterOn = True
Else
   Forms![subLetovi].FilterOn = False
End If

'Napravi subLetovi vidljivim
Forms("subLetovi").Visible=TRUE

End Sub

 
Odgovor na temu

[es] :: Access :: E, stvarno mi sad treba pomoć (po mogućnosti STRUČNA !)

[ Pregleda: 2387 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.