Seite 1 von 1

Doppelte Datensätze

Verfasst: Mo, 12. Feb 2007 16:17
von Josef
Ich weiß, dass man beim Index mit UNIQUE doppelte Datensätze (z.B. Kunden-Nr.) rausfiltern kann.
Jetzt möcht ich eben nur die Datensätze anzeigen die eine doppelte Kunden-Nummer enthalten (also ohne UNIQUE)

Das ist für Euch Profis doch bestimmt ein Klacks!!

Verfasst: Mo, 12. Feb 2007 16:30
von Lewi
Nach dem Seek() führt Du einfach einen weiteren Skip(+1) durch und vergleichst, ob die Kd-Nr auch im nächsten Datensatz vorkommt:

Code: Alles auswählen

Func MyUnique( oDb, nAdNr)
 Local nRec

 oDb:Gotop()
 If oDb:Seek( Str( nAdNr ) )
    nRec := oDb:RecNo()
    odb:Skip()
   if oDb:ADNR == nAdNr 
      MsgBox("KdNr doppelt: "  + Str( nAdNr) )
      Return ( .F. )  // Oder Ruckgabe der Datensatz-Nr
   else
       oDb:Goto( nRec )
   endif
Return ( .T. )     // bzw. Return ( 0 ) 

Verfasst: Mo, 12. Feb 2007 19:51
von Josef
Hallo Lewi,
das gefällt mir schon sehr gut.
Jetzt möcht ich alle "doppelten" in ein Array schreiben und dieses dann als Liste auf dem Bildschirm anzeigen.

Verfasst: Mi, 14. Feb 2007 11:36
von Muecke
Geht vielleicht so

Code: Alles auswählen

Func MyUnique( oDb, nAdNr) 
 Local nRec 

 oDb:Gotop() 
 If oDb:Seek( Str( nAdNr ) ) 
    nRec := oDb:RecNo() 
    odb:Skip() 
   if oDb:ADNR == nAdNr 
      MsgBox("KdNr doppelt: "  + Str( nAdNr) ) 
      aaDD(aArray, {nAdNr} )
      Return ( .F. )  // Oder Ruckgabe der Datensatz-Nr 
   else 
       oDb:Goto( nRec ) 
   endif 
 endi 
Return {aArray}   //( .T. )    bzw. Return ( 0 ) 


Danach das Array in eine Listbox anzeigen

Gruss Thomas

Verfasst: Mi, 14. Feb 2007 12:19
von Rolf Ramacher
Hi Josef,


anzeigen könntest du das auch so. msgbox(var2lchar(array))