![]() |
AW: RemObjects Data Abstract, Schema Modeler erzeugt alles auf dem Client
Hallo Udo,
danke für die Infos. Ich teste gerade mit der aktuellen Testversion. Ich kenne den "alten" Modeler nicht. Vermutlich ist hier das Problem. Sobald ich mein eigenes SQL eingebe, werde ich auch gefragt ob ich die Felder anlegen möchte. Die Felder werden angelegt jedoch ohne das Attribut PK, required u.s.w. Werde mal den Support bemühen. Als Anfänger geht man immer davon aus dass man ein Bedienerfehler macht. Das mit dem veröffentlichen, ich dachte es werden noch irgendwelche DLLs benötigt oder so. Es wird also allen in der EXE includiert. Das ist mir am liebsten. :-) Udo, ich habe dich jetzt wirklich ordentlich strapaziert, sorry dafür. Nur, ich dachte ich habe das verstanden wie ich im RODA-Server eine Dataset bereitstellen kann um im Client die "Remote"-Methode aufrufen zu können like GetAdress(const adressnr: Integer): Binary; Ich habe im Service Manager ein neuen Service angelegt und die Methode GetAdress als Item mit den Parameter und ein Result vom Typ Binary angelegt. Danach die Implementierung der Methode vorgenommen.
Delphi-Quellcode:
Was ich noch nicht verstanden habe, wie kann ich jetzt die Methode GetAdress im Client
function TMobileService.GetAdress(const adressnr: Integer): Binary;
procedure ProcessDataset(aDataset: IDADataset); begin aDataset.ParamByName('adressnr').AsInteger := adressnr; aDataset.Open; DataStreamer.WriteDataset(aDataset, [woRows], -1); end; begin result := Binary.Create; DataStreamer.Initialize(result, aiWrite); try //Die Schema.Table = Adresse serialisieren ProcessDataset(DASchema.NewDataset(Connection, 'Adresse')); finally DataStreamer.Finalize; end; end; Einbinden und aufrufen und das result als dataset ausgeben? Was ich gemacht habe ist, mein Service MobileService_Impl vom Server im Client in Uses einzubinden. Die Methode GetAdress wurde in MobileService_Impl automatisch als protected angelegt.
Delphi-Quellcode:
Wenn ich den cast richtig verstanden habe, greift du damit auf die Methode zu. Doch wie bekomme ich die in den Client? Vermutlich irgendwie über den RemoteDataAdapter, doch meine Methode wird nicht angezeigt. Den Server habe ich natürlich gestartet. RemoteDataAdapter zeigt mir nur die Tabellen vom Scheme Modeler. Übrigens, im Scheme Modeler habe ich auch eine StoredProc auf die ich per Commands zugreife. Die StoredProc liefert eine Select. Die Commands werden jedoch nicht angezeigt im RemoteDataAdapter.
Result := (ISEPricingService as IISEPricing).GenerateCatalogPricesHotel(APeriode.ID, AHotelID, DaysOfWeek, ARoomRateID, DaysOfStay, ServiceIDs);
Wenn es deine Zeit erlaubt, würde ich dich bitten mich aus diesem Wirrwarr zu leiten. Gruß Kostas. |
AW: RemObjects Data Abstract, Schema Modeler erzeugt alles auf dem Client
Hallo Kostas,
mal das zweite zuerst: Zitat:
Delphi-Quellcode:
Das wird so vom Service Builder gebaut. Du musst daher nicht die _Impl-Datei in deinen Client aufnehmen, sondern die _Intf-Datei der Service Lib (nicht zu verwechseln mit der/den _Intf-Datei/en des/der Schemas...).
{ IISEPricing }
IISEPricing = interface(IDataAbstractService) ['{906729C2-F241-4435-8A63-0281F6B1C2F1}'] function GenerateCatalogPricesHotel(const APeriodID: Integer; const AHotelID: Integer; const AWeekdays: StringArray; const ARoomRateID: Integer; const ADaysOfStay: TROIntegerArray; const AServices: TROIntegerArray): Boolean; end; Für den ersten Teil deiner Frage muss ich dich vertrösten, da muss ich mal in Source gucken, den ich nicht hier habe. Diese Art der Datenübertragung habe ich nur selten angewandt, vor allem für FetchAll über mehrere Tabellen. Was mir spontan auffällt: Muss der Rückgabewert deiner Methode GetAdress nicht vom Typ TROBinaryMemoryStream sein? Der Aufruf erfolgt in solchem Fall auch nicht wie in meinem Beispiel, sondern mit einem Aufruf von GetDataCall des RemoteDataAdapters, glaube ich mich zu erinnern. Schau am besten mal in das mitgelieferte FetchAll-Beispiel. |
AW: RemObjects Data Abstract, Schema Modeler erzeugt alles auf dem Client
Zitat:
Clientseitig muss ich manchmal einfach nur ein Select auf die Datenbank absetzen. Das funktioniert mit RODA einfach indem ich im Schema Modeler eine Tabelle erstelle von mir aus auch mit Parameter und greife vom Client über eine MemoTable und ein RemotDataAdapter zu. Das funktioniert ohne Probleme. Vorteil und Nachteil zugleich, der Client hat auf das Schema kompletten Zugriff. Jetzt kommt es vor dass ich dem Client eine Methode zur Verfügung geben möchte die selbst ein Dataset liefert. Wie die Daten zusammengezogen werden, soll der Client nicht erfahren, oder die Daten werden nach einer Logik aus mehreren Selects, und temporären Arrays gebildet. Der Client soll die Logik nicht kennen. Er soll einfach nur das Ergebnis konsumieren können. So meine Vorstellung. Deshalb die Methode! Oder ist meine Vorstellung komplett Mist? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz