Strona 1 z 1

Drugie memo w bazie

Nowy postNapisane: niedziela, 31 maja 2009, 18:30
przez mani
Witam.

Zgodnie z poradami zrobiłem program opierający się na bazie danych. Chciałbym jednak umieścić w nim drugi komponent memo, który także byłby częścią bazy, a nie za bardzo mi wychodzi. Jak to zrobić?

Re: Drugie memo w bazie

Nowy postNapisane: poniedziałek, 1 czerwca 2009, 18:43
przez Ho88it
Czyli chcesz aby w jednym rekordzie wyświetlało dane np: z memo1 i memo2?
Najlepszy sterownik bazy do takich sztuczek to PARADOX. Możesz w nim dać nawet fotki w rekordzie.

Ta porada przez którą robisz swoją bazę jest jak dla mnie toporna (bez urazy dla nikogo). Wyważamy otwarte drzwi ale można się przy tym bardzo dużo nauczyć. Tylko że tak jak zostało to tam przedstawione, może boleśnie odbić się później podczas rozwijania programu :P

Opisz co chcesz dokładnie mieć to pomogę..

Re: Drugie memo w bazie

Nowy postNapisane: poniedziałek, 1 czerwca 2009, 19:06
przez mani
Na stronie opisane jest jak zrobić bazę. Jest tam użyty komponent String Grid oraz komponent Memo. Chciałbym w StringGridzie mieć jedną kolumnę, w której byłaby nazwa. Do każdej nazwy chciałbym móc dodać 2 informację. Jedną chcę umieścić w obiekcie Memo1 (który już jest), a drugą w Memo2 (który chcę utworzyć), tak aby funkcjonalność pozostała taka sama.

I jeszcze takie drugie pytanie, mniej związane z Memo. Jak utworzyć nową kolumnę, która będzie automatycznie nadawała numer porządkowy według wiersza.

Re: Drugie memo w bazie

Nowy postNapisane: poniedziałek, 1 czerwca 2009, 21:51
przez Ho88it
Co do dodawania kolumn teoretycznie takie coś powinno działać
Kod: Zaznacz cały
StringGrid1->Cols[4]->Insert(4,"nowa_kolumna");
ale nie działa i pewnie działać nie będzie choć funkcja wyraźnie do tego służy. Chyba, że robię coś nie tak. Ale komunikat jaki zgłasza program mówi wszystko:
Cannot insert or delete rows from grid.
Czyli kicha z dodawaniem kolumn. Chyba że tak:

Kod: Zaznacz cały
StringGrid1->ColCount=StringGrid1->ColCount+1;

Przyjmując że Lp. stoi przeważnie z lewej strony to wszystkie dane musiały by zostać przesunięte w prawo (niezła pętla by wyszła).Tak że nie za bardzo...

Kod: Zaznacz cały
void __fastcall TForm2::StringGrid1Click(TObject *Sender)
{
for (int i = 0; i <= StringGrid1->RowCount; i++) //ten kod tylko wstawia Lp. nie przesuwając danych
{ StringGrid1->Cells[0][i]=i;}
}

Jednym słowem da rade to zrobić ale pętle zeżrą lwią część czasu aplikacji stale zwalniając przy dopisywaniu nowych danych. Nie wiem czy to dobry pomysł..

Re: Drugie memo w bazie

Nowy postNapisane: poniedziałek, 1 czerwca 2009, 21:57
przez mani
No to może inaczej. W tym skrypcie, w Formie gdzie dodaję dane do Memo, pokazuje się Combobox. W nim wybieram, do którego wiersza mam to przypisać. Jak zrobić, żeby zamiast numeru wiersza wyświetlał treść pierwszej komórki z tego wiersza ;]

No i do tego ponawiam pytanie o to drugie memo ;]

Re: Drugie memo w bazie

Nowy postNapisane: środa, 3 czerwca 2009, 22:49
przez mani
Żeby nie tworzyć nowego tematu. Nie działa za dobrze tamten kod ze strony głównej. Podczas wpisywania nowej notatki, w Comboboksie wyświetlającym wiersze, są one podwojone. I nie jest to chyba błąd w przepisaniu kodu, bo ściągałem też gotowe pliki i tam też jest ten problem. Umiałby to ktoś naprawić? Ponadto przy próbie odczytu bazy pojawia mi się komunikat Grid index out of range. Oznacza to, że baza jest uszkodzona?

Re: Drugie memo w bazie

Nowy postNapisane: czwartek, 4 czerwca 2009, 08:32
przez Cyfrowy Baron
Baza danych zaprezentowana w dziale kursy praktyczne, miała tylko na celu naukę programowania dla początkujących, jest niedopracowana i nie bardzo nadaje się na stworzenie w pełni funkcjonalnego programu bazodanowego. Silnik bazy to klasa TDataBase i w tej klasie należy dokonywać modyfikacji.

Re: Drugie memo w bazie

Nowy postNapisane: czwartek, 4 czerwca 2009, 10:20
przez Ho88it
Jak tak bardzo Ci zależy na Memo w bazie danych to użyj PARADOX'a. Tam nawet pliki graficzne można wstawić do rekordu..