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 | 1843 (1461) | win64 |
| » | problem v C#Oddelek: Programiranje | 2082 (1797) | dvojka |
| » | OleDb in visual studio .netOddelek: Programiranje | 2421 (2200) | Kovalchuk |
| » | c++ & database(access)Oddelek: Programiranje | 1585 (1441) | Seadoo |
| » | branje byte[] iz MS access-ove bazeOddelek: Programiranje | 2090 (2000) | BHawk |