Toon posts:

[delphi 6] tablepositie in form2 krijgen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het gaat om 2 forms. Op beide forms staat bijna hetzelfde:
Op form1 staan de volgende componenten :
table
datasource
dbgrid
dbtext
button

Op form2 staan de volgende componenten.
table
datasource
dbgrid
dbedit


Als er op de button word geklikt opent form2 en kun je de gegevens veranderen. Het probleem is dat hij de steeds het eerste record uit de table pakt. Ik wil het dus voor elkaar krijgen dat ik in form1 een record kan selecteren (vanuit de grid) en dan op de button kan klikken zodat hetzelfde record word geopend in form2.

Dit:
code:
1
form2.table:=form1.table;

werkt niet :(

In de help staat :

To get record information from the table, you need to determine the size of the record buffer. You can obtain this information from the cursor by using the function DbiGetCursorProps. The Cursor properties include information on the table name, size, type, number of fields, and record buffer size. You can find more information on cursor properties in CURProps.


CURPropscurProps;// Properties of the cursor

Chk(DbiGetCursorProps(
hCur, // Handle to the cursor
&curProps));// Properties of the cursor (table)

curProps.iRecBufSize contains the size of the record buffer.


Ik kom er niet uit.

Verwijderd

Gebruik ipv 2 TTables, 1 TTable die je op Form1 zet. Zet Form1 in de uses clausule van Form2. De DataSet property van de datasource op Form2 wordt nu zoiets als 'Form1.Table1'.

Verder zou je er ook voor kunnen kiezen om slechts 1 TDataSource te gebruiken; en je zou alle data access componenten naar een data module kunnen verplaatsen.

  • Tom-my
  • Registratie: November 2000
  • Laatst online: 19-06 09:25

Tom-my

w03iz0rz

Tja je kan heel makkelijk het volgende doen, je zet unit1 in de uses van unit2 en dan link je die grid aan de datasource van unit1, is niet echt de mooiste oplossing maar het werkt prima ;).

Wat ook kan is dat je in de form create van form2 een veld checked op de grid van form een, bijv:

procedure TForm2.Create(blabla);
var
x : integer;
begin
x := form1.table1.fieldbyname('id').asinteger;
try
datasource2.locate('pid',x,[]);
except
showmessage('Record niet gevonden');
end;
end;

pid is een id veld op de table van form2..
id is een id veld op de table van form1..

Als je wat duidelijker bent in wat er precies moet gebeuren kan ik het je nog wel duidelijker vertellen..

Maar hiermee kan je al een end op weg lijkt me.

"Then there was the man who drowned crossing a stream with an average depth of six inches."


Verwijderd

Topicstarter
Hier kom ik zeker een eind op weg ! Bedankt, ik laat het nog wel even horen als het (me) (mis)lukt

GELUKT
sjonge jonge jonge dat ik er zelf niet op kwam. Gewoon table op form2 weg en even de dataset property van form2 op form1.table zetten.

Damn ik ben echt dom |:(

Maar het is wel gelukt *D

Bedankt jongens !

  • Tom-my
  • Registratie: November 2000
  • Laatst online: 19-06 09:25

Tom-my

w03iz0rz

Geen dank, liever een geeltje :)

"Then there was the man who drowned crossing a stream with an average depth of six inches."