🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi.bazy-danych
5 messages
5 total messages Started by Paweł Rzoska Wed, 28 Apr 1999 08:31
GetCurrentRecord
#432
Author: Paweł Rzoska
Date: Wed, 28 Apr 1999 08:31
16 lines
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
#433
Author: Przemysław Rakowski
Date: Wed, 28 Apr 1999 09:07
10 lines
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
#436
Author: marcin brzoza
Date: Thu, 29 Apr 1999 00:56
66 lines
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
#434
Author: Paweł Rzoska
Date: Thu, 29 Apr 1999 06:57
26 lines
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
#435
Author: marcin brzoza
Date: Thu, 29 Apr 1999 16:30
7 lines
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