Prosił bym kogoś kto znalazł by trochę czasu o napisanie aplikacji w Delphi z użyciem komponentu dbExpress, która posiadała by panel rejestracji, logowania i odczyt rekordu (do jakiegoś labela np imię osoby zarejestrowanej czy do innego labela mail takiej osoby.) Oczywiście mowa tutaj o bazie danych MySQL. Proszę was o to ponieważ próbuje rozgrzść MySQL w Delphi przez dbExpress wg kompedium a z tym wychodzi mi tylko odczyt do tabeli, a nie pojedynczych rekordów... Proszę o pomoc i nie odsyłanie do innych źródeł. Kod nie jest mi potrzebny jako gotowiec do mojej aplikacji lecz jako tutorial w celu nauki...
nikt nie napisze programu za Ciebie ... jak masz jakiś problem to pokaż z czym .. czyli pokaż kod tego co już sam stworzyłeś.
Kod nie jest mi potrzebny jako gotowiec do mojej aplikacji lecz jako tutorial w celu nauki...
Trochę dziwnie brzmi .. bo przecież jak będziesz miał kod od kogoś to tak czy siak wykorzystasz to jako gotowiec.
To w takim razie jak napisać procedurę odczytującą z mysql dane wg id ?
Również dorzucam się do tej prośby...
Poniżej zanieszczam link do dokumentu Word w którym dokładnie opisałem swój problem, oraz link do aplikaci którą pisałem w celu nauki MySQL'a. Bardzo was proszę o pomoc i z góry za nią dziękuję...
Dokument Word: http://www.speedyshare.com/631392723.html
Aplikacja (Projekt): http://www.speedyshare.com/998814873.html
Cały kod Aplikacji:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBXpress, FMTBcd, StdCtrls, DB, SqlExpr, ExtCtrls;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
LabeledEdit3: TLabeledEdit;
LabeledEdit4: TLabeledEdit;
Button1: TButton;
GroupBox2: TGroupBox;
LabeledEdit5: TLabeledEdit;
LabeledEdit6: TLabeledEdit;
Button2: TButton;
MySQL: TSQLConnection;
SQL: TSQLDataSet;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
SQLQuery : String;
begin
// Nawiązanie połączenia.
If MySQL.Connected then
MySQL.Connected := False
else
MySQL.Connected := True;
// Rejestracja.
If LabeledEdit2.Text = LabeledEdit3.Text then
begin
(* If [Login nie istnieje jescze w bazie danych] then
begin *)
SQLQuery := Format('INSERT INTO uzytkownicy SET login="%s", haslo="%s", email="%s"', [LabeledEdit1.Text, LabeledEdit2.Text, LabeledEdit4.Text]);
SQL.CommandText := SQLQuery;
(* end else
ShowMessage('Podany login jest zajęty, podaj inny.'); *)
end else
ShowMessage('Podane hasła nie są identyczne, popraw je.');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// Zalogowanie i pokazanie poprawnych danych
(* If [Login znajduje się w bazie MySQL] then
begin
If [Hasło odpowiada loginowi wg ID] then
begin
Label2.Caption := [Login z bazy MySQL odpowiadający poprawnemu zalogowaniu];
Label4.Caption := [E-Mail z bazy danych odpowiadający ID loginu];
end;
end else
ShowMessage('Błędne dane.'); *)
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// zamknięcie połączenie z bazą MySQL.
MySQL.Connected := False;
end;
end.
Zadam pytanie jeszcze raz tutaj... Proszę o info co powinienem wstawić w miejscach '(' (...) ')' ?
- sprawdź czy masz taki rekord w bazie
SQLQuery := Format('SELECT login FROM uzytkownicy WHERE login = "%s";', [LabeledEdit1.Text]);
jeśli liczba rekordów = 1 (wieksza od 0) to login jest zajęty
- podobnie...
SQLQuery := Format('SELECT login, haslo FROM uzytkownicy WHERE login = "%s" AND haslo = "%s";', [LabeledEdit1.Text, LabeledEdit2.Text]);
dealer napisał(a)
Proszę was o to ponieważ próbuje rozgrzść MySQL w Delphi przez dbExpress wg kompedium a z tym wychodzi mi tylko odczyt do tabeli, a nie pojedynczych rekordów...
Jeśli chcesz jeden rekord to nie:
SELECT * FROM tabela
tylko:
SELECT * FROM tabela WHERE pole=wartość