09. november 2000 - 23:53Der er
7 kommentarer og 1 løsning
SQL-oprettelse af ordrer i C5...
Hey allesammen ;)
Jeg er ved at eksperimentere med automatiske ordreoprettelser direkte i OrdKart (og derefter OrdLinie) via SQL/ODBC... men et eller andet går fuldstændig galt.. jeg ødelagde fuldstændig den backup jeg sad og legede med ;)
anyway... nogen der har en idé eller ved hvordan det evt. bør gøres?
Det kræver at du skriver noget om hvad du gjorde. Noget andet er, at oprette ordrer direkte i C5 udefra - det kræver at du ved en hel del om datastrukturen i C5 og hvad der skal udfyldes og ikke udfyldes. Er du sikker på at du kan det?
Først vil jeg oprette selve ordren i OrdKart for derefter at skrive linierne ind i OrdLinie.
Jeg kører en SQL ala:
&datasource(\"DSN=c5commerce;UID=Supervisor\") &getdata(\"SELECT Bilag FROM Bilag WHERE Bilag.Navn=\'Ordre\'\") &assign(c5Ordre,Bilag+1) &sqlnr(\"INSERT INTO OrdKart(Nummer,Konto,FakturaKonto,Navn,Adresse1,Postby,Moms,Valuta,Beholdning,Prisgruppe) VALUES(\'c5Ordre , etc. etc.\')\")
Lige nu virker det på en måde.. Jeg får bare ind imellem en Duplicate Key error.
Jeg ved efterhånden en del om C5\'s infrastruktur, så det burde ikke være et STORT problem ;)
Har du nogen anelse om, hvad du er i gang med? Prøv at debug-oversætte OrdLinie-formen og se hvad kode der bliver kørt når du taster varenummer og antal ind? Og når du bruger ODBC bliver ikke engang koden på tabellerne kørt...
En vigtig ting er, at du efter udvælgelsen af ordrenummeret, tester på at der ikke findes en ordre i forvejen med samme nummer. Man kan nemlig i oprettelsen af en ordre godt overskrive det tildelte ordrenummmer! For det andet skal du have transaktionsnummeret med. Når en ordre følgeseddelleveres og/eller faktureres, får den et transaktionsnummer. Det adskiller \"åbne\" ordrer (transaktion 0) med opdaterede (arkiv) ordrer. Der er en del felter som du manuelt skal indsætte:
Her er især valutafeltet vigtigt, da ingen databasetriggere afvikles.
Se iøvrigt de ting som afvikles ved at se på OrdKart\'s formler unde Udviklingsmenuen/DBD/Ret. Læg især mærke til Init record, Pre-insert og Post-insert. Se også på formens formler.
Hvis du iagtager disse ting, så skulle du ikke få problemer med ordre oprettelsen.
Det næste gælder så OrdLinie. Her gælder selvfølgelig det samme.
Jeg ville glemme at gøre det på den måde, hvis jeg var dig. Hvis du ser alt det kode og alle de makroer som bl.a. checker for prisaftaler, laver lagerposteringer osv, når man indtaster en ordrelinie. Det er håbløst at skulle gøre alt det via ODBC/SQL...
Det eneste måde at gøre det sikkert på er at gøre v.h.a eHandelsmodulet. Nu ved jeg ikke hvilken version af C5, du kører på, men opgrader den til version 2.0; der kan du oprette eOrdrer via ODBC, som så kan overføres til OrdreKartotek vh.a. en QTX indefra C5. På den måde bliver alt de rigtige kode kørt og du slipper for at tænke mere på det...
Du kan også vende tingene rundt: Brug ODBC fra C5 til at hente oplysninger og så oprette ordrer i C5. Så kan du også bruge ordrekladden til at oprette ordrelinier og bogføre disse, så du ikke skal bekymre dig om de problemer der er forbundet hermed. Ellers er jeg enig med Broholm om muligheden for at anvende eHandel, men hvis det også kræver opdatering af mange andre ændringer i C5, kan det jo gå hen og blive en dyr fornøjelse!!
Jeg prøver at finde ud af det, for jeg vil helst selv lave det hele, da jeg er lidt af en kontrol-freak...
Hilsner, Thomas.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.