Witam, pisząc ten program tak naprawde ucze sie Delphi. Program to "Test Pianina", a dokładnie test znajomości brzmienia Pianina. Sam Test Działa Dobrze bez zarzutów, tak samo jak i inne elementy, skupie sie na błędzie. Program przy starcie łaczy się z bazą danych Test1.dbf poprzez koponenty TTable i TDataSource
na początku w Form1 Wpisuje sie Użytkownika TO:
Table1.Active:=false;
Table1.DatabaseName:= ExtractFilePath(ParamStr(0));//upewniam sie gdzie sa pliki
Table1.Open;
szukajN:=Edit3.Text;//Imie do wyszukania
szukajI:=Edit2.Text;
s:=0;
Repeat
s:=s+1;
bazaI:=Table1.FieldByName('Imie').AsString; //imie z bazy
bazaN:=Table1.FieldByName('Nazwisko').AsString;
if ((szukajI=bazaI) AND (szukajN=bazaN)) Then
Begin
Label6.Caption:='Student Znaleziony';
Edit1.Text:=Table1.FieldByName('Kierunek').AsString;
Edit4.Text:=Table1.FieldByName('Grupa_rok').AsString;
Edit2.Text:=Table1.FieldByName('Imie').AsString;
End else Table1.Next;
If (s=Table1.RecordCount) then Begin Label6.Caption:='Brak Studenta, dodaj nowego'; break End; //jak znajdzie przerywa szukanie
Until ((szukajI=bazaI) OR (s=Table1.RecordCount)) AND ((szukajN=bazaN) OR (s=Table1.RecordCount)); //szukam do konca
Table1.Free;
sprawdza czy Student jest w Bazie (pomysł na Search wymyśliłem sam więc jest Dziwny). i to działa Hula aż sie kurzy.
Po czym przechodze do form2, gdzie następuje wyrafinowany ;) test, jego wyniki umieszczam w Recordzie. po czym pojawia się na chwilke Form3 gdzie podliczane są wyniki i wyświetlane podsumowanie Testu, i wracam do Form1 aby zapisać wyniki z Rekordu do Bazy Danych. dodam że przy przejściu między Formami używam Form1.Hide/Show, a inne Close/Show):
if ildzw>0 then
begin
Memo1.Lines.Add(Student.Traf);
Memo1.Lines.Add(Student.NTraf);
Memo1.Lines.Add(Student.Wynik);
Tabela1.Open;
// Table1.Active:=true;
// Table1.Wynik.Assign(Memo1.Lines);
Tabela1.FieldByName('Wynik').Assign(Form1.Memo1.Lines);
Table1.Free;
end;
No i tu zabawa sie kończy: "Access violation at ....", a dokładnie przy PRÓBIE OTWARCIA BAZY DANYCH NIE ZAŚ PRZY WPISANIU ICH. Za // linijki to moje propozycje na wpisanie z Memo do Table1.Wynik (która ma Typ TMemoField).
PS. sorki za błędy i jeśli będą potrzebne jakieś dodatkowe info o prog. to pisać.
dzięki za pomoc ;)