You are not logged in.
Pages: 1
Hi there everyone,
After much effort (thanks to ab and DonAlfredo/AOG (- fpcup is really great!)), I succeeded in getting mORMot to work for me on my Lazarus/FPC installations (Lazarus 1.6/FPC 3.0 and Lazarus 1.7/FPC 3.1.1).
I am simply overwhelmed at how the framework is put together and how much time it could save me with development once I get the data model right. I spend long hours writing and optimizing SQL code so you can imagine how I feel.
I have been reading the documentation as well as trying the examples on the site https://tamingthemormot.wordpress.com/2 … tionships/. However I ran into a problem and I tried a workaround that worked but I'm not sure if I did the right thing.
My modified code with the workaround is shown below
//
procedure TestNoteCase(Rest: TSQLRest);
var
aCase: NoteORM.TNoteCase;
aNote: NoteORM.TNote;
begin
//
aCase := NoteORM.TNoteCase.Create;
//
try
//
aCase.Description := 'Case 1';
Rest.Add(aCase, True);
//
aNote := NoteORM.TNote.Create;
//
try
aNote.Title := 'Note 1';
aNote.Body := 'Note 1 body. Lots of other stuff too.';
// Notes.lpr(63,31) Error: Incompatible types: got "Pointer" expected "TNoteCase"
//aNote.NoteCase := aCase.AsTSQLRecord;
aNote.NoteCase := TNoteCase(aCase.AsTSQLRecord); <---- IS THIS OK?
Rest.Add(aNote, True);
//
aNote.Title := 'Note 2';
aNote.Body := 'Note 2 body. Lots of other stuff too.';
// Save a nil to the record
aNote.NoteCase := TNoteCase(nil); <---- IS THIS OK?
Rest.Add(aNote, True);
finally
aNote.Free;
end;
finally
aCase.Free;
end;
end;
The lines with <---- IS THIS OK? are the ones I'm not sure about. The original line
aNote.NoteCase := aCase.AsTSQLRecord;
gave me an error
Error: Incompatible types: got "Pointer" expected "TNoteCase"
so I changed it to
aNote.NoteCase := TNoteCase(aCase.AsTSQLRecord);
and I used
aNote.NoteCase := TNoteCase(nil);
to save a nil or zero reference to the table because I found out that the second record retained the value of aNote.NoteCase from the first record.
It worked but am I doing the right thing?
Thanks,
JD
Last edited by JD (2016-10-27 20:22:50)
Offline
Hi JD,
Yes I am doing the same of you and works (but you need to be careful)... But the best way to do this (and more complex because mORMot needs a pivot table to establish relationship) is to use TSQLRecordMany implementation.
Last edited by turrican (2016-10-28 12:07:02)
Offline
Hi turrican,
Thanks for your reply. I'll take note of your suggestion.
JD
Offline
Pages: 1