Spielt eigentlich keine Rolle: querystring und datenbank

hallo zusammen

habe ein prob mit asp und datenbanken
ich muss für einen immobilien-händler eine homepage machen.
jetzt sollte ich für alle seine inserate (mietobjekte oder kaufobjekte) eine datenbank anlegen mit rel. vielen infos (das alles klappt ja auch wunderbar)
jetzt muss ich aber jedem einzelnen objekt einen eindeutige ID verpassen und zwar so, dass er sie rel. schnell indentifizieren kann.
nämlich so:

00_54 -> steht für das 54. objekt im jahre 2000
02_1  -> steht für das 1. objekt im jahre 2002
01_998 -> steht für das 998. objekt im jahre 2001

jetzt weiss ich eben nicht, wie ich das am besten machen soll, denn der händler sollte beim update formular die ID nicht selber eintippen, sondern die sollte es ihm gerade erstellen. also, aus dem jahr (z.b. 2001...dann mit dem right-befehl die ersten 2 ziffern streiche, damit nur noch 01 übrig bleibt. dann kommt eben das prob! ich habe in acces eine auto-id eingestellt (einfach der auto-wert) der immer um 1 erhöht!
das würde ja alles wunderbar klappen, wenn ich aber eben immer nur das gleiche jahr hätte...leider will der immo-händler, dass der auto-wert im neuen jahr wieder bei 1 anfängt......also, z.b.:

00_987 dann kommt das neue jahr
00_1 das prob ist jetzt eben, dass der wert "1" den ich eigentlich von der ID haben will, ja schon vergeben ist und ich den nicht ein 2. mal in derselber tabelle bzw. datenbank haben kann...

ja, eben...das wäre mal so mein prob :)

wäre froh, wenn was gutes kommt :)

cu

  1. Hallo ???,

    dein Name spielt schon eine Rolle da wir uns hier angewöhnt haben,
    unsere Namen zu nennen. Wenn Du Antworten erwartest, sollte man Dich
    auch ansprechen können (kann ja auch ein Pseudonym sein)

    [...]

    jetzt muss ich aber jedem einzelnen objekt einen eindeutige ID verpassen und zwar so, dass er sie rel. schnell indentifizieren kann.
    nämlich so:

    00_54 -> steht für das 54. objekt im jahre 2000
    02_1  -> steht für das 1. objekt im jahre 2002
    01_998 -> steht für das 998. objekt im jahre 2001

    jetzt weiss ich eben nicht, wie ich das am besten machen soll, denn der händler sollte beim update formular die ID nicht selber eintippen, sondern die sollte es ihm gerade erstellen. also, aus dem jahr (z.b. 2001...dann mit dem right-befehl die ersten 2 ziffern streiche, damit nur noch 01 übrig bleibt. dann kommt eben das prob! ich habe in acces eine auto-id eingestellt (einfach der auto-wert) der immer um 1 erhöht!
    das würde ja alles wunderbar klappen, wenn ich aber eben immer nur das gleiche jahr hätte...leider will der immo-händler, dass der auto-wert im neuen jahr wieder bei 1 anfängt......also, z.b.:

    00_987 dann kommt das neue jahr
    00_1 das prob ist jetzt eben, dass der wert "1" den ich eigentlich von der ID haben will, ja schon vergeben ist und ich den nicht ein 2. mal in derselber tabelle bzw. datenbank haben kann...

    [...]

    Lege Dir eine Tabelle mit der folgenden Struktur an:
    [tblID]
    id_jahr
    id_obj_id

    Dort kommen das Jahr und die ID aller Objekte rein.
    Jetzt haben wir zum Beispiel alle Einträge im Jahr 00:
    Jahr   Objektid
    00   123
    00   124

    Jetzt musst Du diese Tabelle beim Eintragen eines neuen Objekts in etwa
    so abfragen:

    SELECT (max(id_obj_id) + 1) AS n_obj_id FROM tblID WHERE id_jahr = '00'

    Dann gibt Dir das Statement die bisherig groesste ID + 1 des Jahres
    zurück. Diese kannst Du dann im Insert Statement verwenden.

    Du solltest die ID aber erst beim Eintrag ermitteln.
    <%
    Application.Lock
        ' --- Ermittle neue ID
        ...
        ' --- Neueintrag in die DB
        ...
    Application.Unlock
    %>

    Tschau, Stefan