[ Brain raider @ 11.05.2010. 19:29 ] @
Nakacena je pomenuta baza i slicica kako treba da izgleda u formi


Hvala



http://rapidshare.com/files/386143334/Baza.zip.html
[ t.marko016 @ 11.05.2010. 21:51 ] @
Svako ce ti reci baci se na SQL, ali ako si pocetnik... ja sam takve stvari radio s Data1 kontrolom dok nisam znao SQL.

Ako planiras da radis nesto ozbiljnije i da se bavis ovime blago meni monitor u sake i baci se na SQL, ako imas iskustva sa Basic-om ili prog. jezicima
nedelju dana je mnogo da savladas SQL, ja sam pravio bauka od njega i do skoro ga nisam znao.

A inace za ovo ADO Data kontrola i MSFlexGrid mada neki koriste i ListView ali na slici je koriscena MSFlexGrid kontrola.

Pozdrav
[ Brain raider @ 11.05.2010. 23:25 ] @
Ja sam do sada koristio ListViev ali za ovo sto radim mi ne odgovara, treba mi MSFlexGrid ali ja ne znam da ga koristim pa mi treba neki primer.
Znam da je MySQL zakon ali nemam primer iz koga da ucim, tako da su svi moji pokusaji bili uzaludni.
Pomoglo bi ako imas neki jednostavan primer da ga prostudiram.
[ t.marko016 @ 12.05.2010. 00:22 ] @
Evo kreni odavde http://www.bhwebmasters.net/?p=154, a ako si radio sa ListView-om neces imati problema ni sa MSFlexGrid-om, nista posebno.

Pozdrav
[ Brain raider @ 13.05.2010. 19:05 ] @
Znam da ce sledece pitanje zvucati kao tvoje gubljenje vremena ali nije.

Ako ja hocu da radim nesto u SQL-u sta treba da instaliram na kompu?
Jer su se kod mene javile sumnje sta je u stvari SQL.

Gde ja u stvari treba da unosim one komande SELECT, DISTINC...?


I kako ja da objasnim VB-u da treba da uradi:

Private Sub Form_Load()
procitaj iz baze kolonu 1 i prikazi je u MSFlexGrid1
End Sub


Ja ucim na malo specifican nacin pa ti ovo pretpostavljam deluje malo nebulozno.
[ t.marko016 @ 13.05.2010. 19:10 ] @
Nista ne trebas da instaliras, samo u Components da ukljucis "Microsoft ADO Data Control" i njome moras da se konektujes na bazu.

Evo ti tutorijal za te stvari:
http://www.w3schools.com/ado/default.asp

Pozdrav
[ Brain raider @ 13.05.2010. 19:32 ] @
Ok,
a u cemu pravim tabele-bazu?
[ t.marko016 @ 13.05.2010. 20:06 ] @
Microsoft Office Access 2003
[ Brain raider @ 13.05.2010. 21:29 ] @
pa u cemu je onda razlika?
Ja sam i do sada koristio Access kao bazu.
[ t.marko016 @ 14.05.2010. 08:41 ] @
Ne znam kako si ranije radio sa bazom.

Ali ja bez SQL-a nisam mogao da uradim neke stvari tj. bio sam ogranicen be njega a sa SQL-om mozes sve vezano za baze.
[ Brain raider @ 14.05.2010. 10:04 ] @
Ok,
mene interesuje gde unosim SQL komande?
Tacnije, kada hocu da objasnim formi u VB6 da pri ucitavanju treba da povuce iz Baza.mdb tabela "Clanovi" povuce sve podatke i prikaze ih u Form1.MSFlexGrid1.
[ miki987 @ 14.05.2010. 12:52 ] @
imas primer na temi ispod ove postovao sam bas ono sto te zanima ali evo i ovde

bazu stavljas u c:/
[ t.marko016 @ 14.05.2010. 16:04 ] @
Ovo je odlican primer, sve komande stavljas u string.
[ Brain raider @ 15.05.2010. 07:26 ] @
Sta je u ovom primeru SQL?
[ miki987 @ 15.05.2010. 10:22 ] @
sql je zapravo jezik koji sluzi za radi, obradu podataka a baza npr.Access mesto gde ce se ti podaci cuvati nakon obrade, unosa i t.d.
vb6 je program koji ce napraviti interakciju sa korisnikom u radu sa tim podacima, prikazati mu podatke na graficki lepse resen nacin od Accss-a
kako to funkcionise:
vb6 pomocu upita otvara konekciju ka bazi koja se nalazi na nekoj putanji na HD-u

Code:

'//===================================================
'konektovanje baze
'//===================================================
    Public Sub openconn()
    conn.Provider = "Microsoft Jet 4.0 OLE DB Provider;Data Source=C:\baza_program.mdb;"
    conn.Open
    End Sub
    
'//===================================================
'diskonektovanje baze
'//===================================================
    Public Sub closeconn()
    conn.Close
    End Sub


dakle u ovom slucaju imamo openconn koji sluzi da otvori bazu i closeconn da zatvori, pa tako imamo sledece:
Code:

'//===================================================
'otvarannje forme
'//===================================================

Private Sub Form_Load()
popuni_listview2
End Sub


ovo pokazuje sta se desava ofmah cim se program pokrene, a "popuni_listview2" je isto neka vrsta zadatka koji treba da se odradi cim se program startuje
"popuni_listview2" definises predhodno, das mu ime a on izleda ovako:
Code:

'//===================================================
'popunjavanjelistview-a 2
'//===================================================
Sub popuni_listview2()
Dim SQL As String

    openconn '/// otvara klonekciju i pronazalazi bazu i tablicu koju definisemo ovde ispod
     SQL = "SELECT DISTINCT broj_fakture,redni_broj FROM baza_faktura ORDER BY redni_broj DESC;" '//// ovo je putanja gde se i sta otvoriti u bazi . tablici . po columnu

    Set rs = conn.Execute(SQL)
If rs.EOF Then '///// If petlja sluzi da proveri da li je zadatak ispunjen pa ako nije prijavi gresku ovde ispod...
MsgBox "U bazi faktura nema podataka!", vbExclamation, "Access"'/// greska
closeconn'//// zatvaranje konekcije
Exit Sub
End If
    ListView2.ListItems.Clear '/// brise*cisti sve sto se nalazi na listview-u
    Do Until rs.EOF
    ListView2.ListItems.Add 1, , rs("redni_broj")'//// i ovde sada listview puni sa pdoacima iz baze po columnima
    ListView2.ListItems(1).SubItems(1) = rs("broj_fakture")
rs.MoveNext
Loop
closeconn
    ListView2.ListItems(1).Selected = True
End Sub



Ako zelis uciti moras stalno raditi na praksi, ja se povremeno bavim ovim i zavrsavam moje potrebe, jos uvek ne komercijalno jer ja zapravo nisam izgradjen programer,zavistan sam od es-a, tutorijala i primera, kada radim skoro uvek drzim predhodni program koji sam radio za koriscenje kodova i t.d. ali za razliku od ranije napredovao sam pa umem citati kod i razumeti sustinu.
Meni su pored ovih ljudi piomogli najvise primeri, PlanetSource je extra sajt sa gotovim primerima, a primer od kojeg sam poceo i koji mi mnooogo pomoogao je ovaj u postu

nadam se da sam ti pomogao bar malo i ispravno

[ t.marko016 @ 15.05.2010. 10:27 ] @
U promenjljivoj "SQL" su sve SQL komande koje se izvrse u liniji ispod nje.
Code:

'SQL Kod:
SQL = "SELECT DISTINCT broj_fakture,redni_broj FROM baza_faktura ORDER BY redni_broj DESC;"

'Izvrsavanje komandi
Set rs = conn.Execute(SQL)

Nemoj da te buni ono ispred "SQL = ..." kao sto rekoh to je samo promenljiva(String) potpuno je nebitno sta ce biti.

Pozdrav
[ SpizaGenije @ 15.05.2010. 11:20 ] @
Da se i ja uključim malo... :)

Ovaj primer što je miki naveo je primer kako popunjavaš list...
ali, ako imaš više formi u kojima pozivaš bazu, ili više mesta na formi, onda ti je najbolje da napišeš modul, kako bi sa dve, tri linije kôda skretio posao...
evo ti modul za konekciju na bazu... moraš ga malo prepraviti naravno... :)


Code:

Option Explicit

Public conn As New ADODB.Connection
Public rs As New ADODB.Recordset
Public rs1 As New ADODB.Recordset
Public rs2 As New ADODB.Recordset
Public mSQL As String
Public mSQL1 As String
Public mSQL2 As String

Sub mSQL_conn ()
    Dim AdoDatabasePath As String
    Dim AdoPassword As String
    
    AdoDatabasePath = "tvoja_putanja_do_baze"
    AdoPassword = "tvoja_sifra_za_bazu"
    If konekcija.State = 1 Then konekcija.Close
    konekcija.Open "Provider=Microsoft.Jet.OLEDB.4.0;Password='';" & _
    "User ID=Admin;Data Source=" & AdoDatabasePath & ";" & _
    "Jet OLEDB:Database Password='" & AdoPassword & "'"
End Sub

Function mBaza_pregled(mSQL)
Set rs = New ADODB.Recordset
        rs.ActiveConnection = konekcija
        rs.CursorLocation = adUseClient
        rs.CursorType = adOpenDynamic
        rs.LockType = adLockOptimistic
        rs.Source = mSQL
        rs.Open
End Function
Function mBaza_pregled1(mSQL1)
Set rs1 = New ADODB.Recordset
        rs1.ActiveConnection = konekcija
        rs1.CursorLocation = adUseClient
        rs1.CursorType = adOpenDynamic
        rs1.LockType = adLockOptimistic
        rs1.Source = mSQL1
        rs1.Open
End Function

''// ... i dalje za rs2, rs3...



Dalje, na formi projetka, radiš sledeće kada želiš da podatke prikazuješ u FlexGrid-u:

Code:

Dim trazi_vozilo As String, sifra As String, i As Integer, t As Integer


trazi_nalog = txtReg_br.Text & "%"   ''// trazi_vozilo ti je promenljiva koja odgovara vrednostima iz txt boksa sa desne strane znaka jednakosti... % je znak iz 'SQL sintakse i znači da će prikazivati sve podatke kojima su početna slova ona koja unosiš u taj txt boks

Call mSQL_conn   ''// ovde pozivaš konekciju na bazu iz gore navedenog modula
mSQL = "Select * from tbl_vozilo where vzlID like '" & trazi_nalog & "'order by vzlID"   ''// ovo ti je SQL upit i po tim kriterijumima pretražuješ bazu
Call mBaza_pregled(mSQL)  ''// ovde pozivaš f-ju iz modula a kao vrednost mSQL promenljive uzimaš ovaj gornji string (mSQL= ............)

If mPostojeciNal(trazi_nalog) = False Then     ''// Funkcija koja proverava da li postoji podatak u bazi (kôd ti je dole ispod)
    MsgBox "Nalog broj " & trazi_nalog & " nije registrovan u bazi! Proverite broj naloga.", 48, "O B A V E S T E NJ E!"
    txtReg_br.SetFocus 
Else:    
Me.fgVozilo.Clear  ''// ovde čistiš FlexGrid (on se kod mene zove fgVozilo... ti ga nazovi kako hoćeš  :)
    fgVozilo.Rows = 0
   
    fgVozilo.ColWidth(0) = 1000  ''// ovde mu definišeš broj kolona i njihovu širinu
    fgVozilo.ColWidth(1) = 1000  ''// ja sam ih definisao šest
    fgVozilo.ColWidth(2) = 1000
    fgVozilo.ColWidth(3) = 1000
    fgVozilo.ColWidth(4) = 1000
    fgVozilo.ColWidth(5) = 1000
    
On Error GoTo greska   ''// usled greške, prebacuje ti se na predposlednju liniju kôda i prikazuje ti MsgBox sa opisom greške koja ti se pojavila
    For i = 1 To rs.RecordCount
        t = Chr(9)    ''//  Chr(9) ti je tab vrednost tj, nakon svake unesene vrednosti prelaziš u sl polje
        sifra = rs("vzlID")  ''// rs("vzlID") vzlID ti je kolona u bazi i td.
        fgVozilo.AddItem sifra + t + rs("model_voz") + t + rs("vrsta_voz") + t + rs("tezina_voz") + t + rs("nosivost_voz")  ''// ovde definišeš gde u FlexGrid-u 
''// ubacuješ vrednosti kojih polja
        rs.MoveNext
    Next i
End If

    Exit Sub
    
greska: MsgBox ("Greska broj " & Err.Number & vbCrLf & Err.Description), 48
End Sub


Ovo ti je funkcija za proveru postojanja zapisa u bazi:

Code:

Private Function mPostojeciNal(trazi_nalog As String) As Boolean   ''// ova funkcija ti proverava postojanje zapisa po određenom kriterijumu
                                                                                       ''// i izbegava pojavu greške u programu
Call mSQL_conn
mSQL = "SELECT * FROM tbl_vozilo  WHERE vzlID LIKE '" & trazi_nalog & "'"
Call mBaza_pregled(mSQL)
    
    If rs.EOF = True Then   ''// ovaj deo kôda proverava da li postoji zapis u bazi... ako ne postoji onda odrađuje naredne tri linije kôda
        rs.Close
        Set rs = Nothing
        Exit Function
    End If
    
    If trazi_nalog = rs("vzlID") Then
        mPostojeciNal = True    ''// True - postoji zapis u bazi
    Else
        mPostojeciNal = False   ''// False - ne postoji zapis u bazi
    End If
    
End Function



Malo je ovo sve nepregledno zbog komentara koje sam ti ostavljao da bi ti bilo sve što razumnije , ali kad sve kopiraš u VB i kad ti to sve propisno ofarba, biće ti mnogo preglednije i jasnije :)
[ Brain raider @ 15.05.2010. 15:25 ] @
Aha,
ako sam ja razumeo, SQL je programski jezik koji sluzi za komunikaciju izmedju baze i aplikacije?
U ovom slucaju SQL se unosi u VB kod?


Hoce li mi SQL pomoci da dva ili vise korisnika mogu da pristupe bazi bez da izbacuje gresku?

PRIMER
Baza se nalazi na serveru a 3-4-5 ili vise racunara sa istom aplikacijom joj pristupaju u isto vremei iscitavaju podatke?
[ SpizaGenije @ 15.05.2010. 16:37 ] @
Structured Querry Language (SQL) je jezik za manipulaciju podacima u nekoj bazi (MySQL, Access, Progress, MS SQL itd) ...
Da, u ovom slučaju upisuješ SQL sintaksu u one znake navoda... pogledaj prethodni kôd (mSQL="SELECT * FROM nesto bla bla bla")

Baze podataka su i kreirane upravo da bi se što lakše manipulisalo podacima i da do jednog podatka u svakom momentu može da pristupi više korisnika (da ih gleda, ne menja, jer samo jedan korisnik u trenutku može menjati podatke bez da ih još neko koristi) i da se osećaju kao da sami koriste te podatke...

Koristeći programske jezike (u ovom slučaju VB6) mi pristupamo tim podacima i radimo s njima šta hoćemo...
možemo ih pregledati (SELECT)
umetati (INSERT)
brisati (DELETE)

i još milion korisnih stvari :)
praveći tako GUI preko koga upravljamo podacima što lakši i što jednostavniji korisnicima

da bi se povezivao na bazu podataka i pri tome koristio SQL sintaksu, moraš provesti dosta vremena učeći je (na kraju ses isplati)...


evo ti jedan link prema stranici na kojoj ima dosta korisnih stvari (tutorijala, vežbi, drugih linkova, sample kodova etc etc etc ) --- www.w3schools.com ---
pa prvo nauči koristiti SQL sintaksu, pa se kasnije vrati ovamo da razgovaramo ponovo, jer na ovaj način baš i nemaš mnogo koristi od nas... :)
[ Brain raider @ 15.05.2010. 18:24 ] @
Tvoj post mi je bio i vise nego koristan.
HVALA

Imam samo jos jedno pitanje, program koji pravim trenutno koristi Access kao bazu
ja zelim da predjem na MySQL koji u stvari ne znam da koristim.

ima li ko kakav jednostavan VB6 projekat sa MySQL bazom i informaciju koji MySQL da skinem i instaliram.

Jos jednom HVALA
[ SpizaGenije @ 17.05.2010. 13:15 ] @
Možeš skinuti bilo koji MySQL server...
Ja koristim Apache Triad, zato što je to PHP MySQL server...
Kada ga budeš instalirao, na firewall-u oslobodi 3306 port ili jednostavno isključi firewall :) zato što SQL serveri koriste 3306 i 80 portove... (napomena - na windows visti ne možeš pokrenuti server jer neka od vistinih aplikacija već koristi port 80, ne znam koja jer se ne bakćem vistom... windows 7 i xp su ok)
takođe, moraš da instaliraš i ODBC driver (ja koristim verziju 5.1.6, pa je možeš i ti skinuti /ili ver 3.51 /)

kako kreirati bazu i tabele ćeš naučiti na onom sajtu koji sam ti "nalepio" u prethodnom odgovoru...

Što se tiče VB kôda, sve ostaje isto osim modula za konekciju, gde umesto

Code:

Sub mSQL_conn ()
    Dim AdoDatabasePath As String
    Dim AdoPassword As String
    
    AdoDatabasePath = "tvoja_putanja_do_baze"
    AdoPassword = "tvoja_sifra_za_bazu"
    If konekcija.State = 1 Then konekcija.Close
    konekcija.Open "Provider=Microsoft.Jet.OLEDB.4.0;Password='';" & _
    "User ID=Admin;Data Source=" & AdoDatabasePath & ";" & _
    "Jet OLEDB:Database Password='" & AdoPassword & "'"
End Sub


kucaš

Code:

Sub mSQL_conn()
Set conn = New ADODB.Connection

conn.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver};" & "SERVER=127.0.0.1;" _
   & "DATABASE=ime_tvoje_baze;" _
   & "UID=root;" _
   & "PWD=tvoja_sifra; OPTION=3;"

conn.Open
End Sub


pozz... i javi ako gde zapneš :)