Thread View: pl.comp.lang.delphi.bazy-danych
5 messages
5 total messages
Started by Paweł Rzoska
Wed, 28 Apr 1999 08:31
GetCurrentRecord
Author: Paweł Rzoska
Date: Wed, 28 Apr 1999 08:31
Date: Wed, 28 Apr 1999 08:31
16 lines
1293 bytes
1293 bytes
Witam !!! Mam problem w zastosowaniu powyzszej funkcji. Muszę mieć rekord bazy danych a nie dostęp przez FieldByName stad caly pasztet. Nie widzialem w przykladach zastosowania tego a rezultat nie jest taki jak można oczekiwac. W sciagnietej zawartosci rekordu - glupoty. Czy nie zechcialby ktos podac przykladu zastosowania pobrania z bazy biezacego rekordu ??? -- ---- pozdrawiam Paweł Rzoska Polmos Toruń S.A. przos@polmos.torun.pl www.polmos.torun.pl
Re: GetCurrentRecord
Author: Przemysław Rakowski
Date: Wed, 28 Apr 1999 09:07
Date: Wed, 28 Apr 1999 09:07
10 lines
1167 bytes
1167 bytes
Jeden z pomyslow jest taki: Jezeli tabela ma jakis klucz unikalny, to mozesz wartosc tego klucza dla danego pola sobie pobrac wlasnie poprzez FieldByName. Nastepnie mozesz wywolac: select * from tabela where klucz = '....' Moze tak bedzie dobrze? Wszystko tak naprawde zalezy od tego co chcesz z tym rekordem zrobic.... Hej, hej!
Re: GetCurrentRecord
Author: marcin brzoza
Date: Thu, 29 Apr 1999 00:56
Date: Thu, 29 Apr 1999 00:56
66 lines
3064 bytes
3064 bytes
czesc,
Paweł Rzoska schrieb:
> Mam problem w zastosowaniu powyzszej funkcji. Muszę mieć rekord bazy danych
> a nie dostęp przez FieldByName stad caly pasztet. Nie widzialem w
> przykladach zastosowania tego a rezultat nie jest taki jak można oczekiwac.
> W sciagnietej zawartosci rekordu - glupoty. Czy nie zechcialby ktos podac
> przykladu zastosowania pobrania z bazy biezacego rekordu ???
uzywasz "TBDEDataSet"???
nie uzywam db-objektow delphi, ale w bde wyglada to mniej wiecej tak:
var
hCur : hDBICur;
res : Integer;
props : CURProps;
RecBuffer : PChar;
...
begin
// set the handle
hCur := TwojTBDEDataSet.Handle;
// we need the table(cursor) propertys ...
res := DbiGetCursorProps(hCur, props);
if (res <> DBIERR_NONE) then begin
// somthigs goes wrong, return the errorcode ...
Result := res;
// ... show error ...
ShowError('ReadTableIntoMemory', Result, ['']);
// ... and bye, bye.
Exit;
end;
// alloctate memory for buffer
RecBuffer := StrAlloc(props.iRecBufSize + 1);
// has windows memory for as???
if (RecBuffer = nil) then begin
// memory not allocated, return error ...
Result := DBIERR_NOMEMORY;
// ... show error ...
ShowError('ReadTableIntoMemory', Result, ['']);
// ... and leave the method
Exit;
end;
...
// now we can read the record
res := DbiGetNextRecord(hCur, dbiNOLOCK, RecBuffer, nil);
// problems???
if ((res <> DBIERR_NONE) and (res <> DBIERR_EOF)) then begin
// error number
Result := res;
// show message
ShowError('ReadTableIntoMemory', Result, ['']);
// leave
Exit;
end;
teraz czytasz zawartosc pola uzywajac funkcji
"DbiGetField/(DbiOpenBlob+DbiGetBlobSize+DbiGetBlob+DbiFreeBlob)"
(opis wszystkich funkcji "Dbi" jest w "bde online reference")
jest to kawalek kodu objektu czytajacego cale tabele(sql-statsmenst)
do pamieci => takie male zastepstwo dla ttable i tquery:)
po pobieznym przejrzeniu "TBDEDataSet.GetCurrentRecord" wydaje mi sie,
ze jako parametr nalezy zapodac zarezerwowany bufor. jego wielkosc
dostaniesz z "GetRecordSize", 'zaallocuj' pamiec i wolaj
"GetCurrentRecord".
nie probowalem czy dziala!
powodzenia
marcin
Re: GetCurrentRecord
Author: Paweł Rzoska
Date: Thu, 29 Apr 1999 06:57
Date: Thu, 29 Apr 1999 06:57
26 lines
1791 bytes
1791 bytes
Przepraszam. Znowu lapsus. Przez cholernego IE 5 pomyliłem się i odpowidziałem Ci na Priva. Cytuję:Dzięki, ale to chyba nie tak. Problem jest nastepujący. Mam w starej bazie (btrieve), której struktury nie mogę ruszyć zapis typu rekord z wariantami, przy czym ddf opisuje oczywiście tylko jeden z tych wariantów. Wobez tego w pozostałych przypadkach należy postąpić następująco 1. pobrać rekord. 2, wykonac test na zgodnosc z ddf 3, jesli test .not. ok to podstawić strukturę alternatywną. To dosc proste jedyny problem z lokalizacja rekordu a nie pola. Oczywiscie mozna i tak 1. utworzyc dodatkową zmienną rekordową 2. podstawic wartosci pol z bieżacego rekordu 3. podstawic strukture alternatywna Tylko, że to dość siermiężne i wstyd mi tak pisac ---- pozdrawiam Paweł Rzoska Polmos Toruń S.A. przos@polmos.torun.pl www.polmos.torun.pl
Re: GetCurrentRecord
Author: marcin brzoza
Date: Thu, 29 Apr 1999 16:30
Date: Thu, 29 Apr 1999 16:30
7 lines
1022 bytes
1022 bytes
czesc, jak pomoglo to swietnie, jesli masz jeszcze jakies pytania co do bde napisz, moze bede cos wiedzial. pozdrawiam marcin ps. to byla odp na twoj priv, ale list odrzucilo..
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads