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))