Warenwirtschaft SelectLine

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Warenwirtschaft SelectLine

Beitrag von Benz »

Hallo,

Wir haben eine Warenwirtschaft und ich will über die com-Schnittstelle eine Rechnung anlegen und diese füllen, beispielsweise mit der Adresse des Kunden. Ich habe die Hilfe von SelectLine zur Anbindung ein wenig durchgeschaut und hab nun folgendes Skript geschrieben:

Code: Alles auswählen

********************************************************************************
* Hier wird ein SelectLine-Prozess aufgerufen, der sich in SelectLine          *
* per COM-Schnittstelle einloggt und dort dann seine Befehle ausführt.         *
* Es gibt auch Schleifen hier, die mit dem Programmablauf an sich nichtszu tun *
* haben, sind jedoch nötig, damit keine Fehler auftreten. Diese Schleifen      *
* verhindern den "Beschuss" von SelectLine mit Befehlen, wenn es noch nicht    *
* bereit ist.                                                                  *
********************************************************************************


#include "activex.ch"

PROCEDURE selectline_rechnung

  LOCAL oSelectLine, oleBeleg



  oSelectLine := CreateObject("XFakt.App")

  ********************************************************************
  * Hier wird überprüft, ob SelectLine überhaupt installiert ist,    *
  * und zwar durch Prüfen, ob das oSelectLine-Objekt leer ist.       *
  ********************************************************************
  IF Empty( oSelectLine )
    MsgBox( "SelectLine ist not installed" )
  ENDIF


************************************************************
* Diese Schleife wartet so lange, bis SelectLine eingeloggt*
* ist.                                                     *
************************************************************
DO WHILE .NOT. oSelectLine:LoginReady()

END DO


************************************************************
* Wartet so lange, bis SelectLine bereit für Befehle ist.  *
* Muss nach jedem Befehl aufgerufen werden, da sich sonst  *
* SelectLine abschießt ?!                                   *
************************************************************

DO WHILE .NOT. oSelectLine:ApplicationReady()

END DO



  oSelectLine:Login( char2var("kürzel","C"), char2var("passwort","C"))



************************************************************
* Aufruf des Mandant "AWAWI"                               *
************************************************************
oSelectLine:GetMandant("AWAWI",0)


// Hier kommen die auszuführenden Befehle hin, mit der 2ten Schleife dazwischen

oleBeleg := oSelectLine:NeuerBelegAuto(char2var("R","C"))

DO WHILE .NOT. oSelectLine:ApplicationReady()

END DO
oleBeleg:SetAdresse(char2var("1","C"))            --------------------------------> DAS IST DAS PROBLEM !



************************************************************
* Das SelectLine-Objekt muss zerstört werden, da sonst     *
* unnötige Ressourcen beanschlagt werden.                  *
************************************************************

oSelectLine:destroy()


RETURN
Ich habe die Rechnung angelegt und "1" ist die Kundennummer, in der die Adresse steht, die in die Rechnung eingefügt werden soll.

Und hier noch der zugehörige Ausschnitt aus der SelectLine-Anleitung:
5. Beleg-Objekt - IOleBeleg
Mit dem Beleg-Objekt können Belege erstellt werden.
Das Objekt wird mit der Funktion NeuerBeleg des Fakt-Objektes erstellt.
Alle Funktionen die mit "Set" beginnen haben dieselbe Funktionalität wie in der Belegmaske, wenn ein
Wert in das entsprechende Feld eingegeben wird. (z.B.: SetAdresse füllt alle Adressfelder etc. des
Belegs mit den Vorgabewerten aus dem Kundenstamm)
Funktion Bemerkung

SetDatum(const Datum: WideString) Ändert oder setzt das Belegdatum.

SetAdresse(const KunLie: WideString) Ändert oder setzt die Belegadresse.
KunLie muss eine gültige Kunden bzw.
Lieferantennummer enthalten.

SetMitarbeiter(const Mit: WideString)

SetLiefertermin(Liefertermin: TDateTime)

SetPreisgruppe(const Preisgruppe:
WideString)
Gültige Werte sind '0'-'9'

SetPreistyp(const PreisTyp: WideString) Ändert oder setzt den Preistyp.
Gültige Werte sind 'B'-Brutto, 'N'-Netto, 'S'-Steuerfrei

SetRabattgruppe(const RabGru:
WideString)
RabGru - gültiger Schlüssel aus den Rabattgruppen
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Warenwirtschaft SelectLine

Beitrag von AUGE_OHR »

hi,
Benz hat geschrieben:Wir haben eine Warenwirtschaft und ich will über die com-Schnittstelle eine Rechnung anlegen und diese füllen, beispielsweise mit der Adresse des Kunden.
bist du schon soweit das du mit Xbase++ activeX arbeitest ?
Benz hat geschrieben: Ich habe die Hilfe von SelectLine zur Anbindung ein wenig durchgeschaut und hab nun folgendes Skript geschrieben:
besser wäre ein Verweis wo es die API gibt ... oder ein "original" Sample.

p.s. der DEFAULT Wert des 2nd Parameter von Char2Var( ,cValtype) ist Type "C" so das du es nicht angeben musst.
Benz hat geschrieben:Ich habe die Rechnung angelegt und "1" ist die Kundennummer, in der die Adresse steht, die in die Rechnung eingefügt werden soll.
hm ... könnte es auch " 1" sein ( also linksbündig mit SPACE() aufgefüllt ) ?

was macht es dann an der Stelle ? Errorlog ?
gruss by OHR
Jimmy
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Warenwirtschaft SelectLine

Beitrag von Benz »

Soweit kann man fast nicht sagen. Ich überspringe einiges glaub ich ;-)
Jedenfalls hab ich es jetzt gelöst. Es stand in der Beschreibung.
Es fehlte noch die Funktion Objekt:Save().

Also ganz simpel :-D.
Antworten