Pola typu Memo w bazie danych Paradox

0
  1. Korzystam z kilku tabel należących do jednej bazy paradoxa, jedna z nich zawiera pola typu memo
    Wszystkie pozostałe tabele można bez problemu wyczyścić poleceniem
Tablica.EmptyTable

Jednak gdy próbuje zastosować ta sama metodę dla tablicy z polami typu memo dostaje bład:
„Table cannot be opened for exclusive use”
Polecenie delete działa bez problemów wobec tego ominąłem to przez napisanie czegos takiego:

for i:=1 to Tablica.RecordCount do Tablica.Delete;

problem w tym, ze mimo iż program odczytuje tabele jako pusta to rozmiar pliku typu *.MB się nie zmienia, w jaki sposób można odzyskać miejsce na dysku? poza tym dlaczego nie można wykozystac funkcji EmptyTable?

  1. W jaki sposób można dostać się do poszczególnych wierszy tekstu zawartego w komórce typu memo?
    Udało mi się ten problem rozwiązać jedynie przez przypisanie wartości pojedynczej komórki do komponentu TMemo a następnie odczytywanie kolejnych jego linijek.
Tabela.RecNo:=NumerWiersza;
Memo.Lines.Text:= Tabela[‘Kolumna typu memo’];
for k:=1 to Memo.Lines.Count do  Linia:=Memo.Lines.Strings[k-1];

Niby wszystko działa ale w jaki sposób można to zrobić bez przenoszenia tekstu do TMemo?

  1. czy istnieje jakiś wygodniejszy sposób na odczytywanie wartości komórek tablicy niż poniższe rozwiązanie?
function  ElementBD(Tabela: TTable; Kolumna: String; Wiersz:Integer) : String;
begin
    Tabela.RecNo:=Wiersz;
    ElementBD:=Tabela[Kolumna];
end;
  1. Czy aplikacje korzystające z BDE działają bez problemu pod Vista?

Będę bardzo wdzięczny za wszelka pomoc :)

0
  1. http://www.delphicorner.f9.co.uk/articles/db15.htm
  2. trzeba odczytać całe pole
  3. SQL, FieldByName
  4. BDE jest przestarzałe i nie rozwijane - jeśli nie jesteś skazany na BDE to się zainteresuj czymkolwiek SQLowym, np. FireBird

1 użytkowników online, w tym zalogowanych: 0, gości: 1