PDA

Vollständige Version anzeigen : Neuer Datensatz im Uboot ... oder so


Lupus
01.11.2001, 22:17
Hallöschen ihr Lieben,

folgender Code:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Private Sub</span> SucheKundenNr_AfterUpdate()
<span class="TOKEN">Dim</span> Mldg, Stil, Titel, Antwort, Text1
<span class="TOKEN">With</span> CodeContextObject
DoCmd.GoToControl "KundenNr"
DoCmd.FindRecord .SucheKundenNr, acEntire, False, , False, , <span class="TOKEN">True</span>
<span class="TOKEN">If</span> SucheKundenNr Like KundenNr <span class="TOKEN">Then</span>
Forms!frmTourErfassen!frmKunden.SetFocus
Forms!frmTourErfassen!frmKunden.Form!frmGP.SetFocus
Forms!frmTourErfassen!frmKunden.Form!frmGP.Form![PaketNr].SetFocus
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">If</span> (SucheKundenNr Like KundenNr) = <span class="TOKEN">False</span> <span class="TOKEN">Then</span>
Beep
Mldg = "Neuer Kunden erfassen?"
Stil = vbYesNo + vbInformation
Titel = "Kunden Nummer nicht gefunden!"
Antwort = MsgBox(Mldg, Stil, Titel)
<span class="TOKEN">If</span> Antwort = vbYes <span class="TOKEN">Then</span>
Forms!frmTourErfassen!frmKunden.SetFocus
<span class="REM">'so und hier kommen meine schwierigkeiten.</span>
<span class="REM">'Das UFO frmKunden soll den Focus bekommen und es soll gleichzeitig </span>
<span class="REM">'ein neuer Datensatz erzeugt werden.</span>
<span class="REM">'Aber wie ????????</span>

<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">If</span> Antwort = vbNo <span class="TOKEN">Then</span> DoCmd.GoToControl "SucheKundenNr"
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>

Grüßr UFO Lupus

Lupus
04.11.2001, 11:45
schnief ... mag mich keiner mehr .. heul :D

also der code funz, aber bin nicht zufrieden damit. bei über 15.000 datensätze ist mir das zu langsam.
ich öffne eine neues formular und füge einen neuendatensatz dort an. schließe und AktualisierenDaten in meinem frmTourErfassen.

bitte bitte helft einem AccessDAUschen wie mir ...

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Private Sub</span> SucheKundenNr_AfterUpdate()
<span class="TOKEN">Dim</span> Mldg, Stil, Titel, Antwort, Text1
<span class="TOKEN">With</span> CodeContextObject
DoCmd.GoToControl "KundenNr"
DoCmd.FindRecord .SucheKundenNr, acEntire, False, , False, , <span class="TOKEN">True</span>
<span class="TOKEN">If</span> SucheKundenNr Like KundenNr <span class="TOKEN">Then</span>
Forms!frmTourErfassen!frmKunden.SetFocus
Forms!frmTourErfassen!frmKunden.Form!frmGP.SetFocus
Forms!frmTourErfassen!frmKunden.Form!frmGP.Form![PaketNr].SetFocus
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">If</span> (SucheKundenNr Like KundenNr) = <span class="TOKEN">False</span> <span class="TOKEN">Then</span>
Beep
Mldg = "Neuer Kunden erfassen?"
Stil = vbYesNo + vbInformation
Titel = "Kunden Nummer nicht gefunden!"
Antwort = MsgBox(Mldg, Stil, Titel)
<span class="TOKEN">If</span> Antwort = vbYes <span class="TOKEN">Then</span>
DoCmd.OpenForm "frmKdNrNeu"
DoCmd.GoToRecord , , acNewRec
Forms!frmKdNrNeu.Debitorennr = SucheKundenNr
DoCmd.Requery "Debitorennr"
DoCmd.Close acForm, "frmKdNrNeu"
DoCmd.Requery ""
DoCmd.GoToControl "KundenNr"
DoCmd.FindRecord .SucheKundenNr, acEntire, False, , False, , <span class="TOKEN">True</span>
Forms!frmTourErfassen!frmKunden.SetFocus
Forms!frmTourErfassen!frmKunden![Name_1].SetFocus
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">If</span> Antwort = vbNo <span class="TOKEN">Then</span> DoCmd.GoToControl "SucheKundenNr"
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>

gruß lupus
p.s. alles in access 97

MarioR
04.11.2001, 17:13
Hallo Lupus,

wenn Du Deine Tränen getrocknet hast, :D
kannst Du mal folgenden Code ausprobieren:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Dim</span> rs <span class="TOKEN">As</span> Recordset
<span class="TOKEN">Set</span> rs = CurrentDb.OpenRecordset("DeineTabelle")
rs.AddNew
rs!DeinFeld = Me.SucheKundenNr
rs.Update
rs.Close
<span class="TOKEN">Set</span> rs = <span class="TOKEN">Nothing</span></pre></div>

Irgenwie scheint mir auch Dein restlicher Code komplizierter zu sein, als es nötig ist (so weit, wie ich ihn überhaupt verstanden habe) ;)

Vielleicht noch als Tipp - so kann man auch ganz gut einen DS suchen:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">If</span> IsNull(DLookup("DeinFeld", "DeineTabelle", "Vergleichskriterien")) <span class="TOKEN">Then</span>
<span class="REM">'nicht gefunden</span>
<span class="TOKEN">Else</span>
<span class="REM">'gefunden</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span></pre></div>

Lupus
04.11.2001, 18:21
boh eh ..

das ertemal das ich ein
CurrentDb.OpenRecordset einsetze .. des is ja sowas von super (hatte es nie richtig kapiert, bin halt ein Dauschen)

aber dein zweites beispiel will net bei mir.
er gibt die meldung gefunden nur aus wenn ich schon auf dem datensatz stehe den ich suche. ??????

aber riiiiiiiiesen dank

gruß lupus

MarioR
04.11.2001, 19:26
Mal ein Beispiel bezogen auf Deine DB (ich hoffe, dass ich das richtig überblicke):

DLookup("Debitorennr","DeineTabelle","[Debitorennr]='" & Me.SucheKundenNr & "'")

Alles unter der Voraussetzung, dass Debitorennr vom Typ Text ist (sonst die ' weglassen). So, und gibt's den DS mit der Debitorennr jetzt nicht, dann erhältst Du NULL. Deshalb die Prüfung mit IsNull(..).

Ich bild mir ein, dass diese Suche schneller geht als mit FindRecord.

Lupus
04.11.2001, 19:54
mh ..

also schneller finden .. jo des is wahr,
aber er geht immer noch nicht hin zum datensatz den er gefunden hat.

hier der code:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Private Sub</span> SucheKundenNr_AfterUpdate()
<span class="TOKEN">With</span> CodeContextObject
<span class="TOKEN">If</span> IsNull(DLookup("Debitorennr", "tblKunden", "[Debitorennr]=" & Me.SucheKundenNr & "")) <span class="TOKEN">Then</span>
MsgBox "nicht gefunden"
<span class="TOKEN">Else</span>
MsgBox "gefunden"
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>

nochmal danke ...

Gruß grübelgrübel Lupus
P.S.: SucheKundenNr bzw. Debitorennr = Numerisch

MarioR
04.11.2001, 20:38
Ne, das war jetzt falsch angekommen. [:)

DLookup sucht nur und gibt die gefundene Debitorennr oder Null zurück. Zum richtigen DS gelangst Du damit nicht.

Da kannst Du aber mal was anderes probieren:

Me.RecordsetClone.FindFirst "[Debitorennr]=" & Me.SucheKundenNr
Me.Bookmark = Me.RecordsetClone.Bookmark
If Me.RecordsetClone.NoMatch Then
MsgBox "nicht gefunden"
Else
MsgBox "gefunden"
End If

Lupus
04.11.2001, 20:51
aahhhhhhhhhhhhhh :D

und isch baschtel misch fascht zu dode ...

aber dein neues beispiel geht auch schneller wie mein code ... prima.
kapier zwar noch net was des alles da ist was da steht. aber das lerne ich auch noch.

isch danke dir aufs herzliche für dein mühe und wünsch dir was

gruß glücklicher lupus