Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

felder automatisch ausfüllen

Begonnen von georg5, September 20, 2012, 16:47:45

⏪ vorheriges - nächstes ⏩

georg5

liebe Accessprofis!

Ich habe ein Formular mit den Feldern 0113 bis 0319 also 73Felder je Datenzeile
Diese felder müssen zb von 0113 bis 0314 bzw  0213 bis 0119 mit Faktoren ausgefüllt werden. Meistens sind diese Faktoren für die felder zb 0113 bis 0314 gleich.

Datenzeilen;     "0113"  "0213"  "0313"  "0413" ......usw
Faktor                 0,02    0,02                 0,02
   

Frage:
gibt es eine Möglichkeit am Formular die betroffenen Felder mit einem Faktor automatisch ausfüllen zu lassen. Eingabe "faktor" "von" "bis" oder so?

Wurliwurm

Hi, probier mal was in der Richtung aus:


Dim i As integer
For i = 113 To 314 
Me("txt0" & (i)).Value = 0.02
Next i

georg5

Danke für die schnelle Antwort

im Formular soll ein Feld für "von"
ein Feld für "bis"
ein Feld für "faktor"

bitte sei so nett un erkläre mir deinen code nochmals anhand meines vorschlages

georg

DF6GL

Hallo,

falls die Textfelder wie beschrieben benannt sind, dann etwa so beim Klick auf die Schaltfläche "btnAusfüllen" als Ereignisprozedur "Beim Klicken" der Schaltfläche:


Sub btnAusfüllen_Click()
Dim i As Long
For i = nz(Me!von,0)  To nz(Me!bis,0)
Me("0" & i ) = Str(nz(Me!faktor,0))
Next i
End Sub

georg5

Danke irgendwas geht nu ned


Private Sub Befehl173_Click()
Sub btnAusfüllen_Click()
Dim i As Long
For i = Nz(Me!von, 0) To Nz(Me!bis, 0)
Me("0" & i) = Str(Nz(Me!faktor, 0))
Next i
End Sub


Fehler: Endsub erwartet ?

DF6GL

Hallo,

Scherzkeks...   8)



Sub btnAusfüllen_Click()     weglassen, wenn Du schon Deine eigenen Namen benutzen willst....

georg5

sorry, schwer ists mit den anfängern!

Private Sub Befehl173_Click()

Dim i As Long
For i = Nz(Me!von, 0) To Nz(Me!bis, 0)
Me("0" & i) = Str(Nz(Me!faktor, 0))
Next i
End Sub

Fehler: Typen unverträglich?

DF6GL

Hallo,

ok, was steht in den Textfeldern "von" und "bis"?


schreib zudem mal so:

For i = val(Nz(Me!von, 0)) To val(Nz(Me!bis, 0))

Wurliwurm

Schreib das doch etwas etwas sauberer:

Private Sub Befehl173_Click()

Dim intVon as integer
Dim intBis as integer
Dim dblFaktor as double

if isnumeric(Me!von) then
   intVon = me!von
else
   msgbox "Wert Von ist nicht numerisch!   ", vbcritical
   exit sub
end if

if isnumeric(Me!bis) then
   intBis = me!bis
else
   msgbox "Wert Bis ist nicht numerisch!   ", vbcritical
   exit sub
end if

if intvon > intbis then
   msgbox "Von größer bis!   ", vbcritical
   exit sub
end if

if isnumeric(Me!faktor) then
   dblFaktor = me!faktor
else
   msgbox "Wert Faktor nicht numerisch!   ", vbcritical
   exit sub
end if

call FelderVorbelegen(intVon, intBis, dblFaktor)

End sub


Private Sub FelderVorbelegen(byval intVon as integer, byval intBis as integer, byval dblFaktor as double)
  For i = intvon To intbis
    Me("0" & i) = dblfaktor
  Next i
end sub

georg5

@wurliwurm

Private Sub Befehl173_Click()
Dim intVon As Integer
Dim intBis As Integer
Dim dblFaktor As Double
If IsNumeric(Me!von) Then
intVon = Me!von
Else
MsgBox "Wert Von ist nicht numerisch!   ", vbCritical
Exit Sub
End If
If IsNumeric(Me!bis) Then
intBis = Me!bis
Else
MsgBox "Wert Bis ist nicht numerisch!   ", vbCritical
Exit Sub
End If
If intVon > intBis Then
MsgBox "Von größer bis!   ", vbCritical
Exit Sub
End If
If IsNumeric(Me!faktor) Then
dblFaktor = Me!faktor
Else
MsgBox "Wert Faktor nicht numerisch!"", vbcritical"
Exit Sub
End If
Call FelderVorbelegen(intVon, intBis, dblFaktor)
End Sub

Fehler: sub oder function nicht Definiert? Erklär mir doch einmal was du da genau schreibst und warum. Dann lern ich was, und das problem ist sicher schneller gelöst.DANKE

@DF6GL:
in den felder [von] bis [bis] steht zb:[von]= 0113 bis [0213] im feld [faktor] zb 0,02 dann click und die Felder 0113 und 0213 enthalten den faktor 0,02

69bruno

#10
Ich erlaube mir, da mir wurliwurm schon mal sehr geholfen hat:
Private Sub Befehl173_Click()

Dim intVon as integer        'Deklaration einer Variablen als Integer (ganzzahlige Werte)
Dim intBis as integer         'Deklaration einer Variablen as Integer (ganzzahlige Werte)
Dim dblFaktor as double   'Deklaration einer Variablen als double (Kommazahl)

if isnumeric(Me!von) then  'Abfrage, ob Me!von (Formularfeld für den Wert "von") eine numerische Zahl ist
   intVon = me!von             'Me!von ist numerisch, also wird die Variable intvon mit dem Wert des Formularfeldes "von" gefüllt
else                                   'anderenfalls
   msgbox "Wert Von ist nicht numerisch!   ", vbcritical  'Darstellung einer Messagebox, die darauf hinweist, dass der
                                                                                      'Formularfeldwert "von" keine numerische Zahl ist
   exit sub                                                                       'Funktion verlassen, damit User korrigieren kann
end if                                  'Ende der Abfrage

if isnumeric(Me!bis) then    'Abfrage, ob der Formularfeldwert "bis" numerisch ist
   intBis = me!bis                '"bis" ist numerisch, also wird der Formularfeldwert in die Variable gespeichert
else                                    'anderenfalls
   msgbox "Wert Bis ist nicht numerisch!   ", vbcritical   'Darstellung einer Messagebox, die darauf hinweist, dass der
                                                                                      'Formularfeldwert "bis" keine numerische Zahl ist
   exit sub                                                                       'Funktion verlassen, damit User korrigieren kann
end if                                  'Ende der Abfrage                                                                   

if intvon > intbis then         'Plausibilitätsabfrage, ob "von" größer ist als "bis"
   msgbox "Von größer bis!   ", vbcritical                        'Darstellung einer Messagebox, die darauf hinweist, dass der
                                                                                      'Formularfeldwert "von" größer ist als "bis"
   exit sub                           'Verlassen der Funktion, damit User die Zahlen korrigieren kann
end if                            'Ende der Abfrage


if isnumeric(Me!faktor) then     'Abfrage, ob der Formularfeldwert "Faktor" eine numerische Zahl ist
   dblFaktor = me!faktor           'ist numerisch, Variable dblfaktor wird damit gefüllt
else                                          'anderenfalls
   msgbox "Wert Faktor nicht numerisch!   ", vbcritical   'Darstellung einer Messagebox, das der Faktor keine numerische Zahl ist
   exit sub                                 'Verlassen der Funktion, damit User den Faktor korrigieren kann
end if                                       'ende der Abfrage

call FelderVorbelegen(intVon, intBis, dblFaktor)    'Aufruf der Prozedur "FelderVorbelegen" mit Übergabe der gefüllten Variablen

End sub   ' Verlassen dieser Prozedur
[/font]
If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If

69bruno

#11
Und jetzt zur zweiten Prozedur:

Private Sub FelderVorbelegen(byval intVon as integer, byval intBis as integer, byval dblFaktor as double)
 For i = intvon To intbis       'Schleife, die so oft läuft, wie die Anzahl zwischen von und bis
   Me("0" & i) = dblfaktor     'Me verweist auf das Formular, dann kommt ein zusammengesetzter Feldname 0 in Anführungszeichen bleibt  
                                            'so bestehen das kaufmännische "und" verbindet nun die folgende Angabe mit der 0. Es folgt i, das pro
                                            'Schleife einen Wert zwischen von und bis annimmt. Sagen wir 113, dann wird auf das Formularfeld 0113
                                            'verwiesen." = dblfaktor" weist also dem Feld Me!0113 den aktuellen Wert de Faktors zu
 Next i                                  'nächster Schleifendurchlauf
end sub      'Ende dieser Prozedur
       

Ich befürchte, Du arbeitest mit 2 Formularen, eines, in dem die Daten eingegeben werden sollen und eines, welches die Werte von bis und Faktor abfragt.

In dem Fall ist der Verweis zum Füllen der Felder von bis und Faktor mit Me denke ich nicht konkret genug, da müsste dann sowas wie "FormularnamemeinesFormularsmitden73Feldern"("0" & i) = dblfaktor stehen. Solltest Du tatsächlich im gleichen Formular die Werte abfragen, in dem auch die Felder gefüllt werden sollen, dann wäre Me richtig.       
If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If

69bruno

 :-\
Leider konnte ich keine Schriftart einstellen, die meine Erläuterungen vernünftig darstellen kann. Kopier das in die Zwischenablage, füge es z.B. in Word ein und änder die Schriftart auf Arial, dann steht es bedeutend besser zum lesen da !

Sorry
If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If

georg5

@69bruno  vielen Dank so kann ich das ganze leichter behirnen, und daraus lernen.

Hab [von] bis [bis] leider nicht numerisch gemacht daher funktioniert das ganze warscheindlich noch nicht. Bin am überlegen das umzubauen,.....oder gehts als text auch.....wohl eher nicht woher weis die routine welche felder auszufüllen sind.......
alles in einem formular....hab kein zweites formular zum ausfüllen
lg

Wurliwurm

Zitat von: georg5 am September 21, 2012, 12:13:25
Hab [von] bis [bis] leider nicht numerisch gemacht daher funktioniert das ganze warscheindlich noch nicht.

Textfelder zur Eingabe haben grundsätzlich kein bestimmtes Format. Wenn Du nicht die Tastenkommandos filterst, kannst Du da alle Zeichen eingeben. Von daher ist es m.E. der beste Weg, von Typ String in Integer zu übergeben. Access ist da geduldig und braucht nicht unbedingt eine explizite Angabe einer Konvertierfunktion, solange Du vorher mit ISNUMERIC abfragst, ob der Wert in eine Zahl konvertierbar wäre.

Es geht also

Dim myString as string
Dim myInt as integer

myString = "35"
myInt = meinString

myString = "35.5"
myInt = meinString

myString = "35,523"
myInt = meinString