locked
ide kann code nicht verarbeiten!!! RRS feed

  • Frage

  • Einen wunder schönen guten morgen community..

    ich habe ein sehr schwer wiegendes Problem.. unzwar:

    Ich habe ein Programm geschrieben in dem ich eine n-m beziehung zwischen zwei tabellen (+ verbindungstabelle)hin und her kopiere.. ich habe eine tabelle kunden und eine tabelle produkte.. und dann habe ich kunde_has_produkt. Nun sollen n produkte einem Kunden zu geordnet werden.. Dafür habe ich eine combo box zum aussuchen des produktes, welches zugeordnet wird darunter zwei buttons zum hinzufügen und zum wieder entfernen. darunter befindent sich ein Grid welches ich als Liste missbrauche, weil die Liste mir mehr probleme bereitete, als das grid.

    ok.. man soll in der combo box ein produkt aussuchen, auf den Pfeil nach unten drücken und dann soll der eintrag in dem grid erscheinen.. sucht man ein weiteser produkt aus und fügt es hinzu so stehen zwei einträge in dem grid.. suche ich noch einmal dasselbe auf, so erscheint dieser eintrag nicht nocheinmal in dem grid..

    Nun klicke ich auf einen eintrag im grid und drücke auf den pfeil nach oben.. nun sollte dieser eintrag verschwinden....

    So sollte es zumindest funktionieren, tut es aber nicht, weil im testlauf die Ide abschmiert.. Also keine gewöhnliche fehlermeldung, sondern FoxPro an sich bleibt hängen..  Das macht das debuggen unheimlich schwierig..

    Hier mal die art und weise wie ich das ganze geCoded habe:

    Butten nach unten (Hinzufügen zum grid):

    IF !EMPTY(Thisform.c_produkt.Value) then
    	*SELECT produkt
    	auswahld = produkt.id 
    
    	SELECT Kundenprodukt
    	
    	LOCATE FOR kundenprodukt.name == thisform.c_produkt.Value 
    	IF FOUND() then
    	ELSE 
    		INSERT INTO kunde_has_produkt (kundennr, produktid) VALUES (KNr, auswahlp)
    		TABLEUPDATE(.t.,.t.,"kunde_has_produkt")
    		thisform.fill_produkt
    		*RETURN 
    	ENDIF 
    ELSE 
    	MESSAGEBOX("Bitte wählen Sie ein Produkt aus!")
    ENDIF 
    
    thisform.c_produkt.Value = ""
    


    formularmethode fill_produkt:

    thisform.produkt_list.RecordSource = ""  &&Grid
    
    select produkt.name from Kunde_has_produkt;
    WITH (buffering = .t.) INNER JOIN produkt; 
    ON kunde_has_produkt.produktid == produkt.id;
    WHERE Kunde_has_produkt.kundennr == KNr into cursor kundenprodukt
    
    thisform.produkt_list.RecordSource = "kundenprodukt"
    thisform.produkt_list.Refresh 


    Button nach oben (aus grid entfernen):

    IF !EMPTY(kundenprodukt.name) then
    	SELECT produkt 
    	LOCATE FOR ALLTRIM(produkt.name) == ALLTRIM(kundenprodukt.name)
    	produktid = produkt.id
    
    	DELETE FROM kunde_has_produkt WHERE kunde_has_produkt.produktid = produktid AND kunde_has_produkt.kundennr = KNr
    	TABLEUPDATE(.t.,.t.,"kunde_has_produkt")
    
    ELSE 
    	MESSAGEBOX("Es ist kein Produkt in der Liste ausgewählt!")
    ENDIF 
    
    thisform.fill_produkt  

    und immer wenn ich ein produkt hinzufügen will dann sagt mir windows das programm "FoxPro" reagiert nicht mehr..
    ich hab da schon viel drann herum gebastelt, und zwischen zeitlich habe ich auch erfolge gefeiert.. aber die waren ganz schnell auch wieder dahin..

    ich hab absolut keine ahnung was ich da machen kann.. also in meinem code kann ich jedenfalls meinen synthax-fehler, noch einen logic-fehler erkennen.. Bitte bitte helft mir!!!!!!

    Mittwoch, 27. Februar 2013 08:59

Antworten

  • Das deutet auf einen Defekt einer Datei hin.

    Entweder haben Deine Daten einen Schaden, der beim Lesen zum tragen kommt, oder Dein Formular, oder auch IDE systemdaten wie Foxuser.dbf

    Dateidefekte können die IDE so abstürzen lassen, wenn die SQLEngine durch z.B. falsche Addressierungswerte in einer DBF dazu angeleitet wird in Bereiche einer FPT-Datei zu greifen, die gar nicht existieren oder ähnliches.

    Das einfachste ist erst einmal die foxuser.dbf als Ursache auszuschließen, auch wenn eine Deiner Tabellen, insbesondere die Tabellen, in die Du Daten in dem Moment einfügst, die wahrscheinlicheren sind. Die Foxuser.dbf findest Du per ? SET("RESOURCE",1) Typischerweise ist das entweder im Home() Verzeichnis oder gerade weil es da angesiedelt sein würde, aber UAC (Benutzerkontensteuerung) an ist, in Deinem VirtualStore (in Win7: C:\Users\dein windowsaccounto\AppData\Local\VirtualStore) Auch wenn Foxpro das VFP Verzeichnis anzeigt. Denn Windows leitet Schreibvorgägne in \Program Files\ und Unterverzeichnisse um.

    Das wahrscheinlichste ist, daß Du deine DBFs neu erstellen musst. Das ist jedenfalls die einfachste Form, sie zu reparieren. Wenn ihr nicht foxfix oder ähnliches im Hause habt.

    Das nächstwahrscheinliche ist dann Dein Formular, was Du dann auch neu aufbauen mußt, d.h. wirklich ein neues SCX, nicht alle Controls rauslöschen und wieder aufbauen, dadurch wird keine neue und dadurch heile SCX-Tabelle aufgebaut.

    Tschüß, Olaf.


    Olaf Doschke (Setmics)

    • Als Antwort markiert Schosch93 Mittwoch, 13. März 2013 13:13
    Donnerstag, 28. Februar 2013 09:05

Alle Antworten

  • Das deutet auf einen Defekt einer Datei hin.

    Entweder haben Deine Daten einen Schaden, der beim Lesen zum tragen kommt, oder Dein Formular, oder auch IDE systemdaten wie Foxuser.dbf

    Dateidefekte können die IDE so abstürzen lassen, wenn die SQLEngine durch z.B. falsche Addressierungswerte in einer DBF dazu angeleitet wird in Bereiche einer FPT-Datei zu greifen, die gar nicht existieren oder ähnliches.

    Das einfachste ist erst einmal die foxuser.dbf als Ursache auszuschließen, auch wenn eine Deiner Tabellen, insbesondere die Tabellen, in die Du Daten in dem Moment einfügst, die wahrscheinlicheren sind. Die Foxuser.dbf findest Du per ? SET("RESOURCE",1) Typischerweise ist das entweder im Home() Verzeichnis oder gerade weil es da angesiedelt sein würde, aber UAC (Benutzerkontensteuerung) an ist, in Deinem VirtualStore (in Win7: C:\Users\dein windowsaccounto\AppData\Local\VirtualStore) Auch wenn Foxpro das VFP Verzeichnis anzeigt. Denn Windows leitet Schreibvorgägne in \Program Files\ und Unterverzeichnisse um.

    Das wahrscheinlichste ist, daß Du deine DBFs neu erstellen musst. Das ist jedenfalls die einfachste Form, sie zu reparieren. Wenn ihr nicht foxfix oder ähnliches im Hause habt.

    Das nächstwahrscheinliche ist dann Dein Formular, was Du dann auch neu aufbauen mußt, d.h. wirklich ein neues SCX, nicht alle Controls rauslöschen und wieder aufbauen, dadurch wird keine neue und dadurch heile SCX-Tabelle aufgebaut.

    Tschüß, Olaf.


    Olaf Doschke (Setmics)

    • Als Antwort markiert Schosch93 Mittwoch, 13. März 2013 13:13
    Donnerstag, 28. Februar 2013 09:05
  • Also ich hab das gesamte Projekt jetzt neu aufgesetzt und siehe da.. es funktioniert.. ;) vielen dank für den Tipp
    Mittwoch, 13. März 2013 13:14
  • War also die Projektdatei kaputt (PJX+PJT)?

    Wenn Du ein PJX neu aufbaust, dann kannst Du übrigens per Drag&Drop von PRGs, VCXen etc. aus dem Windows Explorer in das Projektmanager Fenster viele Dateien, Programme, Formulare, Klassenbibliotheken auf einmal ins neue Projekt einbinden.

    Tschüß, Olaf.


    Olaf Doschke (Setmics)

    Mittwoch, 13. März 2013 16:41