Forumi
Home Pravila i pomoć Članovi Kalendar Današnji postovi


Povratak   PC Ekspert Forum > Računala > Software > Web dizajn, programiranje i ostalo
Ime
Lozinka

Odgovori
 
Uređivanje
Staro 07.12.2007., 21:28   #1
MicroHard
Registered User
 
Datum registracije: Aug 2004
Lokacija: Velika Gorica
Postovi: 41
visual basic pomoc

Hocu si napravit neku bazu koja bi mi trebala sluzit uz pracenje proizvodnje po radnim nalozima, pokusavam i nekaj uspio.
doso sam do djela di bi trebo da kada mi se popunjava comobox iz nekog stupca kojeg sam ja nazval u access Name, to sve stima podaci mi se popunjavaju, ali ostali ovi redovi kako da slozim kada mi se stupac Name ocitava u comobox da mi onda automatski se ucitavaju druge vrijednosti u texbox?!
znaci da kad listam Name dodem npr.do 2323 i onda da mi se ispise automatski ostala podrucjka koja sam specificiro...npr.objekt, naziv kupca...
Evo kod



Private Sub Form_Load()
Dim vrnt As Variant



' uzimanje svih RN iz baze
Data1.DatabaseName = "C:\Documents and Settings\Nikola\Desktop\New Folder\Samples.mdb"
Data1.RecordSource = "Select Distinct [Name] " + _
"from Companies order by [Name]"

Data1.Refresh

' Load the Company Names into the ComboBox Control
With Data1.Recordset
Do While Not .EOF
vrnt = ![Name]
If IsNull(vrnt) Then vrnt = ""
cboRightCombo.AddItem CStr(vrnt)
kupac.AddItem CStr(vrnt)
.MoveNext


Loop
End With


FormExit:
Exit Sub



End Sub

Private Sub cboRightCombo_Change()
ComboSearch cboRightCombo
End Sub
Private Sub cmdClose_Click()
Unload Me
End Sub
Private Sub ComboSearch(box As ComboBox)
Dim boxIndex, posCursor As Integer, txt As String, lExst As Boolean

txt = box.Text
posCursor = box.SelStart
If posCursor <> 0 Then
lExst = False
For boxIndex = 0 To box.ListCount - 1
If UCase(Left(box.List(boxIndex), posCursor)) = _
UCase(Left(txt, posCursor)) Then
box.Text = box.List(boxIndex)
box.SelStart = posCursor
lExst = True
Exit For
End If
Next

If Not lExst Then
box.Text = Left(txt, posCursor - 1) + Mid(txt, posCursor + 1)
box.SelStart = posCursor - 1
End If
End If

End Sub
Private Sub kupac_Change()
ComboSearch kupac
End Sub
__________________
MicroH@rd
MicroHard je offline   Reply With Quote
Staro 08.12.2007., 21:28   #2
DJigli
Premium
 
Datum registracije: Feb 2007
Lokacija: Sesvete
Postovi: 25
Ako sam te dobro shvatio, ti imaš ComboBox u koji kad upišeš slovo "z", on se automatski postavi na prvi unos u combo koji počinje sa "z" (npr zABa ili sl.)
Imaš još neke kontrole kao što su TextBox, CheckBox i sl. koje bi se trebale popuniti sa vrijednostima koje se nalaze u access tablici "Companies" u retku koje u "Name" stupcu ima unos "zABa".

Moj prijedlog ti je da počneš od Accessa:
- Ako već nemaš, onda u tablicu iz koje vučeš podatke stavi jedno polje tipa Autonumber koje će ti biti primarni ključ za tu tablicu.

Zatim u VB-u složi SELECT koji bi ti dohvačao sva potrebna polja i ono autonumber polje (AutonumberPK), npr:

'<<<<---->>>>
Data1.RecordSource = "SELECT DISTINCT (Name), AutonumberPK, Adresa, Aktivan " + _
"FROM Companies ORDER BY [Name]"
'<<<<---->>>>

Zatim kada puniš combo sa company u ItemData property od ComboBoxa ubaci ID iz autonumber polja, npr:

'<<<<---->>>>
Dim ID As Long, vrnt As String

With Data1.Recordset
Do While Not .EOF
vrnt = ![Name]
ID = !AutonumberPK

If IsNull(vrnt) Then vrnt = ""

cboRightCombo.AddItem CStr(vrnt)
cboRightCombo.ItemData(cboRightCombo.NewIndex) = ID

kupac.AddItem CStr(vrnt)
kupac.ItemData(kupac.NewIndex) = ID

.MoveNext

Loop
End With
'<<<<---->>>>

Sljedeći korak ti je kada nađeš taj član u Combu da se u Data1.Recordset-u pozicioniraš na tog člana i pročitaš njegove podatke:

'<<<<---->>>>
If UCase(Left(box.List(boxIndex), posCursor)) = UCase(Left(txt, posCursor)) Then
box.Text = box.List(boxIndex)
box.SelStart = posCursor
lExst = True

'Sad počinje novi kod
Data1.Recordset.FindFirst "AutonumberPK = " + box.ItemData(box.ListIndex)

txtAdresa.Text = Data1.Recordset!Adresa
chkAktivan.Value = Abs(Data1.Recordset!Aktivan) 'Ovdje je Abs() funkcija zato što je Bool varijabla u bazi 0 ili -1, a .Value od chk kontrole prima 0 i 1
...
Exit For
End If
'<<<<---->>>>

Ovo bi se vjerojatno moglo napraviti upotrebom polja i sl, ali volim raditi s bazom pa sam to ovako smislio.

Ako trebaš, imam ti još prijedloga kako možeš poboljšati aplikaciju.

Pozz
__________________
Something something ...
DJigli je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Odgovori



Pravila postanja
Vi ne možete otvarati nove teme
Vi ne možete pisati odgovore
Vi ne možete uploadati priloge
Vi ne možete uređivati svoje poruke

BB code je Uključeno
Smajlići su Uključeno
[IMG] kod je Uključeno
HTML je Isključeno

Idi na