1. März 2010 13:13
1. März 2010 13:30
1. März 2010 13:52
FillSellToCounty(Rec : RecordRef)
IF Rec."Sell-to County" = '' THEN BEGIN
SalesShipmentHeader := Rec;
IF Customer.GET(Rec."Sell-to Customer No.") THEN
SalesShipmentHeader."Sell-to County" := Customer.County;
IF SalesShipmentHeader. "Sell-to County" = '' THEN
SalesShipmentHeader."Sell-to County" := 'UNKNOWN';
SalesShipmentHeader.MODIFY;
END;
1. März 2010 14:17
1. März 2010 15:23
RECORDREF
This complex data type identifies a row in a table. Each record consists of fields (which form the columns of the table). A record is typically used to hold information about a fixed number of properties.
The RecordRef object can refer to any table in the database. Use the RecordRef.OPEN function to select the table you want to access. When you use the RecordRef.OPEN function a new object is created. This object contains references to the open table, filters and the record itself and all the fields it contains.
If one RecordRef variable is assigned to another RecordRef variable, they both refer to the same table instance.
2. März 2010 15:36
2. März 2010 17:21
FAFL hat geschrieben:Wenn ich dein Codebeispiel richtig interpretiere, dann brauchst du kein RecordRef, sondern einfach nur einen Parameter vom Typ Record, Subtyp 110.
Ändere doch mal deinen Parameter und teste genau den hier geposteten Code damit!
Beste Grüße
Falk
2. März 2010 17:38
SalesShptHeader.FINDFIRST;
RecRef.GETTABLE(SalesShptHeader);
FillSellToCounty(RecRef);
SalesInvHeader.FINDFIRST;
RecRef.GETTABLE(SalesInvHeader);
FillSellToCounty(RecRef);
SalesCrMemoHeader.FINDFIRST;
RecRef.GETTABLE(SalesCrMemoHeader);
FillSellToCounty(RecRef);
FillSellToCounty(RecRef : RecordRef)
SellToCountyFldRef := RecRef.FIELD(DummySalesShptHeader.FIELDNO("Sell-to County"));
SellToCustNoFldRef := RecRef.FIELD(DummySalesShptHeader.FIELDNO("Sell-to Customer No."));
IF FORMAT(SellToCountyFldRef.VALUE) = '' THEN BEGIN
IF Customer.GET(SellToCustNoFldRef.VALUE) THEN
SellToCountyFldRef.VALUE := Customer.County;
IF FORMAT(SellToCountyFldRef.VALUE) = '' THEN
SellToCountyFldRef.VALUE := 'UNKNOWN';
END;
RecRef.MODIFY;
2. März 2010 17:53
2. März 2010 18:53
fiddi hat geschrieben:Hallo Ralf,
mal eine Frage: Normalerweise sollte die County-Codes in den Verkaufsdokumenten beim Erstellen der Belege korrekt gefüllt werden.
Wenn ich deinen Beitrag von hier mit einbeziehe, komme ich zu dem Schluss, das der ganze Report im normalen Betrieb höchstens einmal laufen sollte, um evtl. früher nicht korrekt angelegte Daten zu korrigieren.
Aus diesem Grunde würde ich mir einen Report mit 3 Einträgen für die Tabellen 110,112,114 bauen, der auf "Sell-to County" filtert (ein Filter auf "Bill-to County" sollte nicht nötig sein, da er den gleichen County-Code enthält, wenn ihr nicht mit abweichender Rechnungsadresse arbeitet) und den Code einfach kopieren. Alles andere kostet nur unnötig Laufzeit, und vor allen Dingen: Programmierzeit .
Noch besser ist es diese Datenfehler gar nicht erst entstehen zu lassen, und die Stammdaten in Ordnung zu halten
P.S.: Solltest du mit einer nicht VISTA-tauglichen 4er- NAV-Version arbeiten, kann es dir passieren, das dein Report mit RecordRefs und FieldRefs bei größeren Datenmengen einschläft.
2. März 2010 22:24
2. März 2010 23:40
sav_SellTo := "Sell-to County";
sav_BillTo := "Bill-to County";
if ("Sell-to Code" = '') then begin
Cust.get("Sell-to Cust. No.");
"Sell-to County" := Cust."County Code";
end;
if ("Bill-to County" = '') then
if ("Bill-to Cust. No." = '') or ("Bill-to Cust. No." = "Sell-to Cust. No.") then
"Bill-to County" := "Sell-to County"
else begin
Cust.get("Sell-to Cust. No.");
"Sell-to County" := Cust."County Code";
end;
if (sav_SellTo <> "Sell-to County") or (sav_BillTo <> "Bill-to County") then
modify;
3. März 2010 18:33
3. März 2010 20:57
pSalesLine.TRANSFERFIELDS(ShipLine);
Function(pSalesLine);
ShipLine.TRANSFERFIELDS(pSalesLine); // evtl. nur einzelne Felder übernehmen
Function(VAR pSalesLine: Record 37)
BEGIN
pSalesLine."Ship-to County" := XXX;
end;
4. März 2010 08:23
Hallo Ralf,ralf5 hat geschrieben:@fiddi
...
Sagen wir mal ich möchte das Feld "Sell-to County" aktualisieren und überall XXX reinschreiben.
Also die kurze Funktion:
Function xy(ref : RecordRef)
"Sell-to County" = 'XXX'
Wie mache ich das?
4. März 2010 13:18
SilverX hat geschrieben:sicherlich war es plump von mir einfach nur Sourcecode zu posten. Aber in meinem letzten Beitrag in diesem Thread hast du diese Funktion bereits.