Forum » Programiranje » MS Access in C#
MS Access in C#
caucic ::
Pozdravljeni.
V MS Accessu imam bazo in v njej več tabel. (osebe, izobrazba, kontakt,...) V C# delam aplikacijo, s katero bom upravljal z DB. Kar se tiče vnašanja podatkov v DB ni večjih problemov. Zatakne se mi že tako rekoč na začetku prve malo resnejše zadeve in sicer, ko želim izdelati poizvedbo. V Formi imam TextBox1, kamor vpišem npr. osebno številko osebe. Želel pa bi, da se mi ob kliku na gumb "Išči", izpišejo vsi ostali podatki o tej osebi. (npr. ime in priimek ter vsi kontaktni podatki ter dosežena izobrazba)
Tabela Osebe vsebuje atribute: (#osebna številka, imePriimek); Tabela Kontakt atribute: (#Id, OsebaFK, telDoma, telSluzba, eMail); Tabela Izobrazba pa (#ID, OsebaFK, Poklic, StopnjaIzobrazbe,...)
Zatakne se mi, ko moram povedat oz. napisat, da je Osebe.OsebnaStevilka = Kontakt.OsebeFK. (enako tudi za povezavo med tabelama Osebe in Izobrazba)
Kako mora biti napisam SQL v C#, da bo zadeva delovala pravilno? Rezultat želim, da se mi izpiše v listBoxu na isti formi.
Hvala vnaprej za pomoč.
Lp, MM
V MS Accessu imam bazo in v njej več tabel. (osebe, izobrazba, kontakt,...) V C# delam aplikacijo, s katero bom upravljal z DB. Kar se tiče vnašanja podatkov v DB ni večjih problemov. Zatakne se mi že tako rekoč na začetku prve malo resnejše zadeve in sicer, ko želim izdelati poizvedbo. V Formi imam TextBox1, kamor vpišem npr. osebno številko osebe. Želel pa bi, da se mi ob kliku na gumb "Išči", izpišejo vsi ostali podatki o tej osebi. (npr. ime in priimek ter vsi kontaktni podatki ter dosežena izobrazba)
Tabela Osebe vsebuje atribute: (#osebna številka, imePriimek); Tabela Kontakt atribute: (#Id, OsebaFK, telDoma, telSluzba, eMail); Tabela Izobrazba pa (#ID, OsebaFK, Poklic, StopnjaIzobrazbe,...)
Zatakne se mi, ko moram povedat oz. napisat, da je Osebe.OsebnaStevilka = Kontakt.OsebeFK. (enako tudi za povezavo med tabelama Osebe in Izobrazba)
Kako mora biti napisam SQL v C#, da bo zadeva delovala pravilno? Rezultat želim, da se mi izpiše v listBoxu na isti formi.
Hvala vnaprej za pomoč.
Lp, MM
majlo ::
Evo en primer, sicer VB, ampak bi moraloit jasno:
Public Sub GetData()
cn = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & SchoolData.SchoolData.DataModule.mDataPath & "\school.mdb")
'cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\emp.mdb;")
cn.Open()
Try
Dim Comm As New OleDbCommand("Select * from pupils", cn)
Dim Rdr As OleDbDataReader = Comm.ExecuteReader
Dim ime As String
Dim Priimek as String
If Rdr.HasRows Then
if Rdr.Read()
ime = Rdr(0).ToString
priimek = Rdr(1).ToString
itd....
End if
End If
Finally
cn.Close()
cn.Dispose()
End Try
End Sub
Predlagam, da si narediš v accesu query (view), kjer se prikazujejo podatki iz vseh tabel in nato izbiraš iz tega viewa.
Potem spremenit select stavek:
Dim Comm As New OleDbCommand("Select * from view where id = " & textbox1.text , cn)
Ta stavek je bolj na pamet ampak vidiš kam pes taco moli :)
Public Sub GetData()
cn = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & SchoolData.SchoolData.DataModule.mDataPath & "\school.mdb")
'cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\emp.mdb;")
cn.Open()
Try
Dim Comm As New OleDbCommand("Select * from pupils", cn)
Dim Rdr As OleDbDataReader = Comm.ExecuteReader
Dim ime As String
Dim Priimek as String
If Rdr.HasRows Then
if Rdr.Read()
ime = Rdr(0).ToString
priimek = Rdr(1).ToString
itd....
End if
End If
Finally
cn.Close()
cn.Dispose()
End Try
End Sub
Predlagam, da si narediš v accesu query (view), kjer se prikazujejo podatki iz vseh tabel in nato izbiraš iz tega viewa.
Potem spremenit select stavek:
Dim Comm As New OleDbCommand("Select * from view where id = " & textbox1.text , cn)
Ta stavek je bolj na pamet ampak vidiš kam pes taco moli :)
majlo ::
Aja za view primer querija:
SELECT Kontakt.*, Osebe.*
FROM Osebe INNER JOIN Kontakt ON Osebe.OsebnaStevilka = Kontakt.OsebeFK;
Nisem siguren če bo prav delalo iz prve ampak probaj pa boš videl
SELECT Kontakt.*, Osebe.*
FROM Osebe INNER JOIN Kontakt ON Osebe.OsebnaStevilka = Kontakt.OsebeFK;
Nisem siguren če bo prav delalo iz prve ampak probaj pa boš videl
Zgodovina sprememb…
- spremenilo: majlo ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | SQL problemOddelek: Programiranje | 1702 (1320) | win64 |
» | problem v C#Oddelek: Programiranje | 1976 (1691) | dvojka |
» | OleDb in visual studio .netOddelek: Programiranje | 2302 (2081) | Kovalchuk |
» | c++ & database(access)Oddelek: Programiranje | 1497 (1353) | Seadoo |
» | branje byte[] iz MS access-ove bazeOddelek: Programiranje | 1944 (1854) | BHawk |