[ _CaRtMan_ @ 17.05.2008. 11:25 ] @
Zaista potrebno. Ali ne znam kako rjesiti. Napravio sam dva ona textfielda tipa "TEdit" i button tipa "TButton". Ostvario sam konekciju sa bazom (access). TADO komponentu koristim. Dodao sam TADOQuery, TDataSetProvider, TClientDataSet, TDataSource. I sve to fino spojio. U TADOQuery-u selektujem podatke iz tabele korisnici..

Eh nemam ideju kako dalje. Tek ucim Delphi.
[ Miloš Baić @ 17.05.2008. 14:34 ] @
Ako nemaš ideju, kreni od pretrage foruma, pa google, etc. Posle toga nam se obratiš da ti konkretno pomognemo.
[ _CaRtMan_ @ 17.05.2008. 16:45 ] @
Pretrazivao sam forum i google, ali nisam naisao ni na sta. Slabo sta mogu naci za Delphi, pa zato i pitam.
[ obucina @ 18.05.2008. 23:07 ] @
Kreni odavde:
http://www.google.com/search?q=delphi+ado+example

A zatim pronadji knjigu Mastering Delphi 7 ili neku noviju, pa citaj.

Ako koristis Delphi 7, pregledaj ADO primere koji dolaze uz Delphi. Lokacija je
c:\\Program Files\\Borland\\Delphi7\\Demos\\Ado\\

Izbor baza podataka kao pocetne tacke za ucenje nije bas najpametniji izbor, ali dobro, bitno je da imas volju.


Dakle, oko tvog problema, lepo si to sve povezao, i TADOQuery ti vraca sve podatke iz tabele korisnici. Problem je da pronadjes da li u toj tabeli postoji ono sto je upisano u TEdit polja. Za to mozes koristiti funkciju Locate.

Neka bude da je u TEdit pod imenom edit1 upisano ime, a u edit2 lozinka. U OnButtonClick pises (pisem napamet, mozda ce biti gresaka):

Code:

// Prvi nacin
if (ADOQuery1.Locate("korisnik; lozinka", [edit1.text, edit2.text])) then
begin
  // Korisnik postoji i uneta je ispravna lozinka
end
else
  ShowMessage('Neispravno korisnicko ime ili lozinka');

// Drugi nacin
if (ADOQuery1.Locate("korisnik", [edit1.text])) then
begin
  // Korisnik postoji, proveri mu lozinku
  if (ADOQuery1.FieldByName('lozinka').AsString = edit2.text) then
  begin
    // lozinka je ispravna
  end
  else
    ShowMessage('Neispravna lozinka');
end
else
  ShowMessage('Korisnik sa tim imenom ne postoji');
[ _CaRtMan_ @ 20.05.2008. 13:34 ] @
Hvala na odgovoru. Iskoristio sam prvi nacin s tim da sam morao ispraviti neke greske Tamo gdje je ako je ispravno unesen username i password nastimao sam da otvara glavnu formu. Al kad odem frmlogin.close; zatvori mi cijelu aplikaciju, a trebao bi samo tu formu.. ??

I jos me zanima na koji nacin cu znati podatke o korisniku. Konto sam da selektujem sve iz tabele korisnici gdje je username = edtUsername.text (to je onaj TEdit). ali ne znam kako bih to uradio. u main formi napravim query i kako da napisem u onaj SQL Wide String List Editor nesto tipa:

SELECT * FROM otKorisnik; ili tako nesto?? pa onda pretrazujem podatke gdje je username=frmlogin.edtUsername.text;

Da mi je nekako smjestit ko varijable sve to..

[ obucina @ 20.05.2008. 15:31 ] @
Citat:
_CaRtMan_:Al kad odem frmlogin.close; zatvori mi cijelu aplikaciju, a trebao bi samo tu formu.

Prvu formu koju kreiras program prihvata kao glavnu formu i kada tu formu zatvoris gasi se ceo program. Tvoja prva forma je login, pa kad se ona zatvori, zatvara se i program.

Za ostalo, procitaj ovo - to je PRVI link medju rezultatima na Guglu (link sam ti ostavio u prosloj poruci).
http://delphi.about.com/od/database/a/databasecourse_2.htm
[ Miloš Baić @ 20.05.2008. 16:57 ] @
Odlično, delphi je pravi izbor za učenje.

Za problem koji si naveo, možeš naučiti više stvari, prvenstveno preko foruma. Lično, na tvom mestu bih išao ovim redosledom:

1) pretražio forum da vidim kako inicijalizovati formu (login), posle koje, ako je uslov zadovoljen, prikazuje se glavna;
2) ispravan način korišćena dbGo komponenti, povezivanje na bazu i korišćenje TDataModule;
3) kad sam kreirao login formu, nakačio se ispravno na bazu, napravio bih funkciju na osnovu koje ću proveriti da li postoji korisnik u bazi (tabeli). Za nju bih koristio neku od query komponenti i sql sintaksu.
4) ako te po logovanju zanimaju podaci o korisniku, prilikom sql upita, ukoliko je uslov zadovoljen, podatke o korisniku možeš iščitati i prikazati na više načina (u zavisnosti kako to želiš, odgovor će biti konkretniji);

O svemu ovome, ima više kvalitetnih diskusija, te predlažem da se osloniš na njih i rešićeš probleme.

Pozdrav.
[ savkic @ 20.05.2008. 18:33 ] @
> Hvala na odgovoru. Iskoristio sam prvi nacin s tim da sam morao ispraviti neke greske Tamo gdje je ako je ispravno unesen username i password
> nastimao sam da otvara glavnu formu. Al kad odem frmlogin.close; zatvori mi cijelu aplikaciju, a trebao bi samo tu formu.. ??

Uradi ovako, loginformu najpre izbaci iz autocreated forms (Project/Options), u unitu gde je ona napiši otprilike ovako:

Code:

function DoLogin: Boolean;
var
  frm: TfrmLogin;
begin
   frm := TfrmLogin.Create(nil);
   try
      Result := frm.ShowModal = mrOK; 
   finally
     frm.Free;
   end;
end;



> SELECT * FROM otKorisnik; ili tako nesto?? pa onda pretrazujem podatke gdje je username=frmlogin.edtUsername.text;

Code:

DataSet.Sql = 'SELECT * FROM KORISNIK WHERE USER_NAME = :UserName';
DataSet.Prepare;
DataSet.Params[0] := Trim(edtUserName.Text);
DataSet.ExecSql;
[ _CaRtMan_ @ 22.05.2008. 15:15 ] @
Hvala na odgovorima :)

Tnx svima.
sakvic, mozes li tacno reci gdje to u unity-u da napisem? kad izbacim? Znaci ja imam:

- login formu
- formu 1
- formu 2

auto-create je login forma i ona je fsnormal, kad sve bude ok, otvara formu 1 koja je fsMDIForm , a u form 2 imam button koji otvara form 2 i ona je MDIChild. Eh sad zelim da kad se logujem da mi login forma nestane, a da prikazuje samo formu 1 i da nakon klika na button otvori formu 2 a da ne izbaci error:

Cannot create form. No MDI Forms are currently active.

A neko gore dade mi onaj link, pogledacu ono oko pa vidjet malo oko uzimanja podataka i tako.

Pozdrav !

EDIT

Evo ubacio sam:

function DoLogin: Boolean;
var
frm: TfrmLogin;
begin
frm := TfrmLogin.Create(nil);
try
Result := frm.ShowModal = mrOK;
finally
frm.Free;
end;
end;

i izbacio iz autocreate, ali onda kad pokrenem nema stada kreira xd :)
[ savkic @ 22.05.2008. 18:30 ] @
> sakvic, mozes li tacno reci gdje to u unity-u da napisem? kad izbacim? Znaci ja imam:

> - login formu
> - formu 1
> - formu 2

Najbolje direktno u project.dpr (Project/View source), otprilike:

Code:

  Application.Initialize;

  if DoLogin then
    Application.CreateForm(TForm1, Form1);
  
  Application.Run;

[ zedin @ 22.05.2008. 18:30 ] @
Možda je najbolje da login dodaš na samom početku programa, pogledaj source od projekta ( desni klik na sam projekat pa View Source ), onda modifikuj kod gdje se kreira glavna forma. Za glavnu formu postavi samo MDI formu.

Code:

begin
  Application.Initialize;

  if DoLogin Then
  begin
    Application.CreateForm(TMainForm, MainForm);
    Application.Run;
  end else begin
     ShowMessage('Pogresan user name. ');
  end;
end.



Bilo bi dobro da DoLogin funkcija vraca mrOk ili mrCancel rezultat a da informacije o loginu smjestis u neku globalnu variablu. Najbolje kreiraj strukturu za informacije o korisniku npr. TUser , i deklarisi globalnu variablu koja za logovanog korisnika.

Code:

type TUser = record
  ID: Integer;
  Username:String ;
  *ostalo*
end;

var LogedUser :TUser;
function IsUserLoged() :Boolean;
begin 
  return (LogedUser.ID > 0); 
end;



Dalje probaj da napravis da se program ne zatvara ako se user name pogrijesi.
[ Milan Milosevic @ 26.05.2008. 18:00 ] @
Dobro je za ucenje ali tako nista neces zastiti.