Announcement

Collapse
No announcement yet.

Fehler beim Öffnen von FlowFact (Programm)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fehler beim Öffnen von FlowFact (Programm)

    Hallo ihr Lieben,

    wenn ich FlowFact (Programm, welches seine Daten in einer Datenbank speichert) öffne, kommt folgende Fehlermeldung:

    Entweder BOF oder EOF ist True, oder der aktuelle Datensatz wurde gelöscht. Der angeforderte Vorgang benötigt einen aktuellen Datensatz.


    Da ich mich mit der Script-Sprache nicht auskenne, sagt mir der Script demzufolge auch nichts. Zumindest, kann ich nicht sagen, ob bzw. wo ein Fehler im Script sein soll. Da ich nun aber nicht 100 Seiten posten will, erstmal ein Teil des Scrips (der Teil, wo zumindest irgendwas mit Fehler steht):

    ---------------------------------------------------------------------------------------------
    Code:
    BEGIN
    CREATE TABLE [dbo].[Bibliothek](
    	[DSN] [uniqueidentifier] ROWGUIDCOL  NOT NULL,
    	[ANGELEGT] [datetime] NULL,
    	[TOUCH] [datetime] NULL,
    	[Verfasser] [varchar](100) NULL,
    	[Titel] [varchar](200) NULL,
    	[Sachgebiet] [varchar](100) NULL,
    	[Raum] [varchar](100) NULL,
    	[Stichwort] [varchar](100) NULL,
    	[NOTIZ] [text] NULL,
    	[stamp] [timestamp] NOT NULL,
     CONSTRAINT [Bibliothek_DSN] PRIMARY KEY NONCLUSTERED 
    (
    	[DSN] ASC
    )WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF, FILLFACTOR = 90) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    END
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[GetAktWhere]') AND type in (N'P', N'PC'))
    BEGIN
    EXEC dbo.sp_executesql @statement = N'CREATE  proc [dbo].[GetAktWhere] @SEL_Part nVarchar(4000), @where ntext, @archiv int
       AS          
        SET NOCOUNT ON   -- dies ist wichtig für Updatbare Recordsets
       
        DECLARE  @SELECTSTR nvarchar(4000)        
         /*  nText kann nicht als lokare Variable verwendet werden */    
         /*  angeblich könnte nund die Abfrage mehr als 8000 Zeichen enthalten, aber es funktioniert doch nicht
         Fehler z.B. (bei Übergaben ohne N'':  Fehler beim Konvertieren von Datentyp text in ntext. aber mit :
         SqlDumpExceptionHandler: Prozess 11 erzeugte eine schwere Ausnahmebedingung c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server beendet diesen Prozess.A */ 
         
            CREATE TABLE #_akt (DSN uniqueidentifier ,AKT_DSN uniqueidentifier )
            CREATE INDEX IND_DSN on #_akt (DSN )
            CREATE INDEX IND_AKT_DSN on #_akt (AKT_DSN )   
    
    	       
            INSERT INTO  #_akt EXEC sp_executesql @where
                       
    		WHILE @@rowcount > 0
    		BEGIN  -- Begin 1.WHILE Block
    		                 
                    INSERT INTO #_akt  Select  DSN, AKT_DSN from AKT where                    
                         DSN IN ( select AKT_DSN from #_akt  )
                               AND 
                         DSN NOT IN ( select DSN from  #_akt )             
          	       		
    		END   -- ENDE 1.WHILE Block
    
                
                  -- 2. jetzt noch von unten nach oben 
             INSERT INTO #_akt  Select  DSN, AKT_DSN from AKT where  AKT_DSN in (select  DSN from #_akt  )  AND DSN NOT IN  ( select DSN from  #_akt )    
                      
    		WHILE @@rowcount > 0
    		BEGIN  -- Begin 2.WHILE Block
    		                 
                      insert into #_akt  Select  DSN, AKT_DSN from AKT where                    
                      AKT_DSN IN  ( select  DSN from #_akt  )
                                AND 
                        DSN NOT IN  ( select DSN from  #_akt )               
          	       		
    		END   -- ENDE 2.WHILE Block
    	/*Jetzt alle zusammengesammelten Datensätze zurückgeben, mit den ursp. Select klausel*/	
    
                
    	/*Jetzt alle zusammengesammelten Datensätze zurückgeben, mit den ursp. Select klausel*/	
    	
    	IF @archiv = 0
    		SET @SELECTSTR = @SEL_Part   + '' Where AKT.DSN in (Select DSN from #_akt) and AKT.FARCHIV = 0''
    	else
    		SET @SELECTSTR = @SEL_Part   + '' Where AKT.DSN in (Select DSN from #_akt) ''
    	
           
    	EXEC sp_executesql @SELECTSTR 
    
            /* wenn varchar verwendet werden soll muss die in der Form EXEC (  ''irdend_eine-Abfrage'' )  ! Wichtig sind die Klammern */' 
    END
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[GetChildrenAD]') AND type in (N'P', N'PC'))
    ---------------------------------------------------------------------------------------------

    Es wäre sehr nett, wenn jemand von euch ne Idee hätte.

    Vielen lieben Dank im Voraus
    Gruß
    Anita

  • #2
    Ein witziger Ansatz - "schaut mal, ob da vielleicht der Fehler drinnen steckt, sonst habe ich noch viele, viele weitere Seiten, ich habe nämlich keine Ahnung".
    Du kannst ruhig alle 100 Seiten posten, wird sicher keiner lesen, außer jemandem ist totlangweilig. Aber wenn das Source aus dem Programm selber ist, kriegst du vielleicht noch Probleme mit dem Hersteller wegen nicht genehmigter Veröffentlichung.

    bye,
    Helmut

    Comment


    • #3
      Hallo Anita,

      dem entnehme ich mal, das die Probleme mit der Anmeldung nach dem Update behoben sind?
      Entweder BOF oder EOF ist True, oder der aktuelle Datensatz wurde gelöscht. Der angeforderte Vorgang benötigt einen aktuellen Datensatz
      Das ist kein Laufzeitfehler vom MS SQL Server, sondern von ADO, der Datenzugriffskomponente.
      Da wird versucht mit einem leeren Cursor zu arbeiten, ohne vorher auf EOF/BOF zu prüfen.
      Das wird zum einen daran liegen, das erwartete Daten nicht vorhanden sind und zum anderen an der eben fehlenden Prüfung EOF/BOF.

      An dem T-SQL Script direkt wird es jedenfalls nicht liegen.
      Olaf Helper

      <Blog> <Xing>
      * cogito ergo sum * errare humanum est * quote erat demonstrandum *
      Wenn ich denke, ist das ein Fehler und das beweise ich täglich

      Comment

      Working...
      X