PC Ekspert Forum

PC Ekspert Forum (https://forum.pcekspert.com/index.php)
-   Web dizajn, programiranje i ostalo (https://forum.pcekspert.com/forumdisplay.php?f=39)
-   -   visual basic pomoc (https://forum.pcekspert.com/showthread.php?t=90223)

MicroHard 07.12.2007. 21:28

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

DJigli 08.12.2007. 21:28

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


Sva vremena su GMT +2. Sada je 04:36.

Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 1999-2024 PC Ekspert - Sva prava pridržana ISSN 1334-2940
Ad Management by RedTyger