mulla on nytten tietokanta jossa on asiakastaulu. taulussa on asiakas id ja asiakkaan nimi kenttä. ja nytten pitäs saada haettua asiakkaan tiedot joko asiakas id:llä tai asiakkaan nimellä. Sql:llä se pitää ilmeisesti hakea? nyt sitten kysyisin että miten se toteutetaan käytännössä?
kiitoksia vastauksista!
t:mmikko
eli vb6 toteutan tuota...
eikö kukaan osaa avittaa mua pikkusen tuossa?
Hei mmikko!
Voisitko antaa hieman lisävalaistusta...elikä onko kyseessä mahdollisesti MS Access tietokanta ja mitä
mahdollisia ActiveX-komponentteja käytät tetokantayhteyden luomiseen..? Jos pelkkä SQL-syntaksi riittää niin...esim.
SELECT * From taulu Where nimi = "mmikko"
hakee taulusta nimeltä taulu sarakenimen nimi perusteella kaikki tietueet joissa nimi-sarakkeen kentässä lukee mmikko
Jos taas kaipaat hieman enemmän valaistusta asiaan niin...
Lisää ensimmäiseksi projektiisi referenssi Microsoft DAO x.x Object Library ja lisää sitten vaikka moduuliin seuurava rivi:
Global dbs As Database
Oletetaan, että sulla on vaikka kolme tekstiruutua, yksi komentopainike sekä yksi valintaruutu objekti sun fomilla...Lisää komentopainikkeen click tapahtumaan seuraavaa:
Private Sub Command1_Click() Set dbs = OpenDatabase("Polku\Tietokanta.mdb")'ja näin olet luonut yhteyden tietokantaan nimeltä Tietokanta.mdb Dim rst As Recordset Set rst = dbs.OpenRecordset("taulu", dbOpenSnapshot)'avaa recordset objektin taulukossa 'taulu' If Not rst.RecordCount = 0 Then rst.MoveFirst 'siirtää kursorin ensimmäiseen tietueeseen mikäli taulussa on tietueita Select Case Check1.Value Case 0 'haku nimen perusteella Do While Not rst.EOF If rst!nimi = Text1.Text Then Text2.Text = rst!nimi: Text3.Text = rst!asiakas_id: Exit Do End If rst.MoveNext 'siirtää kursorin seuraavaan tietueeseen Loop If rst.NoMatch Then msg& = MsgBox("Nimeä ei löytynyty", vbOKOnly, "MsgBox") Case 1 'haku asiakasnumeron perusteella Do While Not rst.EOF If rst!asiakas_id = Val(Text1.Text) Then Text2.Text = rst!nimi: Text3.Text = rst!asiakas_id: Exit Do End If rst.MoveNext Loop If rst.NoMatch Then msg& = MsgBox("Asiakanumeroa ei löytynyt", vbOKOnly, "MsgBox") End Select Set rst = Nothing: Set dbs = Nothing 'suljetan recordset objekti sekä yhteys tietokantaan End Sub
kiitos nea! tää auttoi jo paljon. eli kyseessä todellakin on access tietokannat, unohin mainita sen tuossa viestissä.
en ole vielä ihan varma millä komponentilla luon nyt sen lopullisen yhteyden tietokantaan. Suositteletko jotain erityisesti?
Hei mmikko!
Tykkään käyttää VB6:ssa DataEnvironment Designer'ia, mutta Adodc + MSHFlexGrid controll yhdistelmä toimii myös ihan mukavasti.
Kannattaa mieluummin käyttää muotoa 'Seek', kuin että tarkastellaan koko taulukko yksitellen..
Set rs = DB.OpenRecordset("Table1", dbOpenTable) rs.Index = "PrimaryKey" rs.Seek "=", Id If rs.NoMatch Then I = MsgBox("Ei löytynyt:", vbCritical) Else Nimi = rs!Nimi End If
tai vaihtoehtoisesti SQL:ää
Set rs = dbs.OpenRecordset("select * from Table1 where Nimi = " & Nimi) Value = rs!id 'tai Set rs = dbs.OpenRecordset("select * from Table1 where Id = " & Id) Value = rs!Nimi
Aihe on jo aika vanha, joten et voi enää vastata siihen.