Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1492to1496
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
@Lukas "Datenbank" - neue Lösung
29.05.2016 21:20:30
Piet
Hallo Lukas,
es gibt für dich zwei neue Beispieldateien zur Datenbank.
Ich denke du wirst über die neue Lösungen sehr überrascht sein
Ich hoffe sehr das du bei Gelegenheit reinschaust und den Thread findest.
Ich bin damals etwas spaet geblieben, hatte Besuch, der Thread fiel raus.
Ich freue mich das ich weitergemach habe und jetzt dies Lösung anbieten kann
Auf deine Rückmeldung, ob meine Ideen praxisgerecht sind, freue ich mich sehr.
UserForm programmieren habe ich bis jetzt nie gemacht, ich hoffe es klappt gut.
mfg Piet
https://www.herber.de/bbs/user/105856.xls
https://www.herber.de/bbs/user/105857.xls

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: @Lukas "Datenbank" - neue Lösung
30.05.2016 08:20:43
Lukas
Hallo Piet.
Vielen Dank, ich habe den Thread gefunden :)
Ich werde mir die Dateien ansehen und dir dann Bescheid geben.
Gruss
Lukas

AW: @Lukas "Datenbank" - neue Lösung
02.06.2016 15:46:59
Lukas
Hallo Piet
Danke für die Listen!
Das Konzept mit der Archivierung finde ich toll, auch die Art der Suche die du programmiert hast, hat Stil!
Ich denke, dass dies besser wird als ich mir das vorgestellt habe ;)
Das Konzept steht, denke ich, leider aber funktioniert das ganze in der Praxis noch nicht.
Ich bekomme folgende Fehlermeldungen (angefügte Bilder)
Userbild
Userbild
Userbild
Ich freue mich immer mehr.
Danke für deine Arbeit
Bis auf weiteres.
Viel Erfolg!
Gruess
Lukas

Anzeige
AW: @Lukas "Datenbank" - neue Lösung
02.06.2016 17:29:21
Piet
Hallo Lukas,
ich freue mich sehr das dir mein Konzept gefaellt. Das ehrt mich sehr.
Ich denke man sieht darin den "alten Praktiker", meine jahrelangen Erfahrungen mit Excel 97
wenn ich anderen Leuten geholfen habe, u.a. meinem Bruder, mit Datenbank für Elektrobetrieb.
Kommen wir zu den genannten Fehler, einer dürfte sehr "blööd", aber auch rein menschlich sein!
In der Entwicklungsphase schreibt man sich Variable nicht immer schön sauber in die obere Zeile
sondern ein bisserl "kunterbunt" durcheinander. Beim Bereinigen löscht man die überflüssigen weg.
Dabei muss ich versehentlich die Variable Zahl gelöscht haben, und habe es nicht bemerkt.
Setze sie unter (Sub DB_löschen) noch drunter, wie unten in dem kurzen Code gezeigt.
Der andere Fehler mit UserForm Initialisieren könnte im Pfad für: - Datenbank Öffnen liegen.
Im Modul "DB_Public_Öffnen" sind -Öffentliche Constanten- u.a. auch die Pfad Angabe. Bei mir:
Public Const Pfad = "F:\Excel Herber Forum\Lukas Datenbank\" 'neuer Pfad Name
Hier musst du bitte -Deinen Pfad- für deinen PC eintragen. Dann sollte es funktionieren.
Die Makro technische Erklaerung liegt übrigens im UserForm Code in diesem Befehl:
On Error GoTo öffnen 'bei Fehler Datei Öffnen
Set WkSh = Workbooks(DBDatei).Worksheets(DBBlatt)

Erkennt das Initialisieren Programm das die DB noch zu ist versucht es sie selbst zu Öffnen!
Kann das Makro die Datenbank nicht fehlerfrei Öffnen kommt als naechstes die Fehlermeldung!
Es deutet alles darauf hin das beide Makros den richtigen Pfad nicht finden können!
Besonderheit User;Form2
gehst du auf Daten suchen, erscheint die MsgBox "Daten nicht gefunden" wird immer UF2 geöffnet.
Egal wie du die Option eingestellt ist! Der Sinn ist, das du hier -auch- Breite/L/H eingeben kannst.
Schaltflaechen:
Nein, keine Schaltflaeche ist überflüssig, eine sollte in beiden UF umbenannt werden.
Die Schaltflaeche "Daten in DB übertragen" übertragt -NUR- von der Tabelle1 in die DB.
Die Schaltflaeche "Daten übernehmen" -HOLT- Daten aus der DB in Tabelle1, aktive Zelle.
Du kannst diese Schasltflaeche umbenennen: "Daten aus DB übernehmen" klingt logischer.
Korrigiere bitte den Fehler mit der Variablen "Zahl", und prüfe bitte den Pfad Namen.
Dann sollte es laufen. Ansonsten helfe ich gerne noch bis es zufriedenstellend laueft.
mfg Piet
Sub DatenIn_Datenbank_Löschen()
Dim DbZeile As Long, lZell As Long
Dim bZahl As Double, löZell As Long
Dim Zahl As Double   'nachgetragen

Anzeige
AW: @Lukas "Datenbank" - neue Lösung
02.06.2016 18:10:13
Piet
Nachtrag
zu deiner Frage mit Notiz: und Version:
Das sind vorgesehen Textfelder wo du eigene Notizen oder Version Nr reinschreiben kannst.
Dieser Text wird schon in die Datenbank Spalte B + C übernommen. Auch beim Daten löschen.
"Notiz:" und "Text:" steht nur im Feld zur Erinnerung wofür diese Felder da sind.
Erfolgt keine Eingabe wird der von mir eingefügte Text ignoriert.
Ist dir aufgefallen das in Tabelle1 Spalte L drei Zeilen sind mit Rules Option:
Dort kannst du jede beliebe Rules eingeben, sie wird in UF2 ins Option-Feld übernommen.
Die Idee dazu kam mir als Option zum schnellen anklicken für die gebraeuchlichsten Rules.
Dort kannst du auch einen Rules Kurz-Namen angeben, dafür gibt es in der DB eine extra Spalte.
Diese Rules-Kurz Namen, bitte selbst ausdenken, werden in die kleine ComboBox UF2 übernommen.
Zum Daten in die DB eintragen wird aber vom Makro der Rules Original Name geprüft.
Ein Makro war damals noch nicht fertig, ist noch in Arbeit. Beim Anklicken des ListBox für jeden
Artikel deine persönliche Notizen dazu und evtl. Version Nr. aus der Datenbank ins Textfeld laden.
Da arbeite ich noch dran, sende aber nur den Makro Code ohne Beispieldatei.
Dazu muss nur in UF 2+3 in Zeile "Private Sub ListBox1_Click" das Makro: "Call ListBox_Notiz_laden"
eingefügt werden, und ein neues Modulblatt auf "ListBox_Notiz" angelegt werden
Den Code dazu schreibe ich noch, und sende ihn nach.
Piet

Anzeige
AW: @Lukas - Thread ist bald zu Ende !!
03.06.2016 00:43:28
Piet
Hallo Lukas
der Thread ist bald zu Ende. Ich würde das Ergebnişs gerne noch erfahren.
mfg Piet

AW: @Lukas - Thread ist bald zu Ende !!
03.06.2016 09:00:28
Lukas
WOW!! Piet RESPEKT!
Es funktioniert... Sagenhaft!
Hut ab, es ist sehr benutzerfreundlich.
Ich werde noch auf deine Codes warten um dann dies endgültig abschliessen zu können.
Vorneweg ein fettes Dankeschön! :)
Man hört von sich.
freundliche Grüsse
Lukas

AW: @Lukas - Thread ist bald zu Ende !!
03.06.2016 11:20:31
Lukas
Hallo Piet
Ich habe noch einen kleinen Fehler entdeckt...
(Die grau eingefärbte Datei habe ich formatiert und wäre froh, wenn du mir angeben könntest was ich ändern muss im Code oder sonstigen Einstellungen.)
Und zwar folgendes:
Userbild
Ich habe zwei Artikelnummern in die Datenbank eingetragen und in die Graue Liste übertragen.
Ein Artikel hat im Gewicht 0,XXX Kilogramm und der andere 1,XXX Kilogramm. Der Art. mit 1,XXX Kilo zeigt es mir nach dem "holen aus der DB" als 1'XXX (also im Tausenderformat an) der 0,XXXer ist hingegen richtig...
Falls dies unmöglich zu lösen wäre: Mir ist egal ob die werte in Gramm oder Kilo eingetragen werden müssen. Am Ende zeigt eine Unabhängige Zelle (G3) über eine Formel das Gesamtgewicht an, d.H. da (in G3)müsste nur die Zellenformatierung angepasst werden.
Könntest du dich bitte noch diesem Problemchen annehmen?
Danke und ein schönes Wochenende
Lukas

Anzeige
AW: @Lukas "Datenbank" - neue Lösung
03.06.2016 14:16:46
Piet
Hallo Lukas
ich konnte den von dir gemeldeten Fehler bei mir nicht erkennen. Bei mir ist Tabelle1
und die Datenbank für Gewicht auf "Standard" Formatiert. Ist das bei dir anders?
Im Augenblick kann ich bei mir in Excel 2003 keine Abweichung feststellen.
Dafür habe ich noch einen Fehler beim Daten übertragen entdeckt. Bitt korrigiere ihn.
İm Makro "DatenIn_Datenbank_Eintragen" benutze ich Rules aus der ListBox zum prüfen.
Damit stimmt Rules aber nicht mehr mit dem Original Text aus Tabelle 1 überein! Mein Fehler.
Setze die neue Anweisung: - Rules = .Range("I1").Value - vor den Kopiervorgang.
Dann stimmt es wieder. Anbei des neue Makro zum Notizen + Version übernehmen.
Der BEfehl: -ListBox_Notiz_laden- kommt in den Code für die UserForm, wie gezeigt.
Das Makro in ein neues Modulblatt: - ListBox_Notizen Dann sollte auch der Teil laufen.
Für den Format Fehler müssen wir noch mal schauen. Im Augenblick finde ich ihn nicht.
mfg Piet
Sub DatenIn_Datenbank_Eintragen()
'Artikel Nr, Rules, Datum, Notizen einfügen
Rules = .Range("I1").Value         'Rules aus Tabelle1 laden
DBWb.Range("E" & DbZeile) = Txt    'ArtikNr
DBWb.Range("K" & DbZeile) = Rules  'falsch  3.6.2016 korrigiert
' diesen Code in beide UserForm eintragen:
Private Sub ListBox1_Click()
ListBox_Notiz_laden
End Sub
' diesen Code in neues Modulblatt:  ListBox_Notiz  laden
Option Explicit   '3.6.2016  Piet für Herber Forum
Dim AC As Object, DBWb As Object
Sub ListBox_Notiz_laden()
Dim Notiz As String, Version As String
Dim Artikel As Variant, Rules As String
Dim Indx As Integer, n As Integer
Dim Zeile As Long, lZell As Long
On Error GoTo Fehler
Set_UserForm   'Set UF
'Index aus ListBox1 laden
Indx = UF.ListBox1.ListIndex
Artikel = UF.ListBox1.Value
Rules = UF.ListBox1.List(Indx, 6)
Set DBWb = Workbooks(DBDatei).Worksheets(DBBlatt)
lZell = DBWb.Cells(Cells.Rows.Count, "E").End(xlUp).Row
'SuchName auf DB Format formatieren  473.123.123
Txt = Artikel  'für Artikel mit "."
If InStr(Txt, ".") = 0 Then _
Txt = Mid(Txt, 1, 3) & "." & _
Mid(Txt, 4, 3) & "." & Mid(Txt, 7, 3)
'Suchname in Datenmbank suchen  (n=mehrfach)
For Each AC In DBWb.Range("E2:E" & lZell)
If AC = CLng(Artikel) Or AC = Txt Then
If DBWb.Cells(AC.Row, ("K")) = Rules Then
If Zeile = 0 Then Zeile = AC.Row
n = n + 1
End If
End If
Next AC
'wenn nicht gefunden - UserForm2 Öffnen  (suchen)
If n = Empty Then MsgBox Artikel & "  -  in DB  nicht gefunden":  Exit Sub
'Notiz + Version aus DB lasden
Notiz = DBWb.Cells(Zeile, 3).Value
Version = DBWb.Cells(Zeile, 4).Value
If Notiz & Version = Empty Then Exit Sub
'in ListBox1 einfügen
UF.TextBox1.Text = Notiz
UF.TextBox2.Text = Version
Exit Sub
Fehler:  MsgBox "Fehler in:  ListBox_Notiz_laden"
End Sub

Anzeige
AW: @Lukas "Datenbank" - neue Lösung
03.06.2016 14:27:33
Piet
persönlicher Nachtrag
im Augenblick bleibe ich noch dran bis dieser Thread herausfaellt.
Aus privaten Gründen werde ich nach einiger Zeit für unbestimmte Zeit nicht erreichbar sein.
Ich lebe nicht in BRD, und habe meine Heimat und meine Geschwister 2 Jahre nicht gesehen.
Als Frührenter habe ich auch kein Zeitlimit wann ich dann wieder im Forum bin.
Wenn du einen neuen Thread reinstellst dann bitte nicht direkt an Piet, sondern normal.
Sonst gehen die anderen Ratgeber an den Thread nicht heran, lassen ihn unbeachtet.
Solange ich noch erreichbar bin kann ich mich ja wieder einklinken.
Ansonsten alles Gute für dich und viel Erfolg bei deiner Arbeit.
Es hat auf jeden Fall Spass gemacht diese Datenbank zu entwickeln.
Für einen Facharbeiter mit nur Volksschule Wissen und normalem Exel 97 Basiswissen
eine schöne Bestaetigung das man totzdem gute Arbeit geleistet hat. Freut mich sehr!
mfg Piet

Anzeige
AW: @Lukas Daten löschen Fehler?
03.06.2016 15:47:11
Piet
Nachtrag
ich sehe gerade das bei mir mit "Daten löschen" noch was nicht stimmt?
Da hake ich noch einmal nach. Wenn der Thread rausfaellt öffne ich einen neuen.
mfg Piet

AW: @Lukas "Datenbank" - Code Korrekturen
03.06.2016 17:48:02
Piet
Hallo Lukas
ich habe beim Testen noch ein paar Flüchtigkeitsfehler bemerkt. Bitte korrigiere sie.
Fehler Korrekturen: - UserForm2 Code
Private Sub CommandButton4_Click() - ist falsch! Button 4 ist für Rules laden bestimmt
Private Sub CommandButton3_Click() - So ist es richtig! Button 3 bei Klick
DatenIn_Datenbank_Löschen
Korrektur: ListBoxNotiz_laden
Private Sub ListBox1_Click() - Vor "Notiz laden" noch diese If Anweisung einfügen (beide UFs)
If UserForm2.ListBox1.ListIndex ListBox_Notiz_laden
Korrektur für Daten Löschen: - If Indx -1 Then funktioniert nicht einwandfrei!! Besser so:
If Indx neue Idee:
Mir kam der Gedanke beim Daten löschen, Was ist wenn es schon eine DB Notiz gibt?
Das bisherige Programm überschreibt existierende Notiz oder Version nicht!
Beim neuen Code kommt eine Abfrage ob du eine seperate Notiz in Spalte I speichern willst?
Die alte DB Notiz bleibt davon unberüht, sie wird nicht überschrieben!
Ich hoffe das ich jetzt alle Flüchtigkeitsfehler gefunden habe.
mfg Piet
neuer Code für Daten Löschen mit InputBox Abfrage:
Option Explicit   '03.6.2016  Piet für Herber Forum
Dim DBWb As Object, DBLö As Object
Dim rFind As Object, AC As Object
Dim Rules As String, Txt As String
Dim Notiz As String, Version As String
Dim Artikel As Variant, Indx As Integer
'Makro löscht Artikel Daten in der Datenbank
'Daten werden inn "gelöschte Daten" kopiert
'***  neuer Code mit InpuBox Abfrage für seperate Lösch Notiz
Sub DatenIn_Datenbank_Löschen()
Dim DbZeile As Long, lZell As Long
Dim bZahl As Double, löZell As Long
Dim Zahl As Double   'nachgetragen  2.6.2016  (AW von Lukas)
Dim LöschNotiz As String  'neu hinzugefügt  3.6.2016
Set_UserForm   'Set UF
'Index aus ListBox1 laden
Notiz = Empty:  Version = Empty
Indx = UF.ListBox1.ListIndex
'Fehlermeldung mit Abfrage bei:   Breite/Länge/Höhe  (Gewichİt)
If Indx = 0 Then
Artikel = UF.ListBox1.Value
Rules = UF.ListBox1.List(Indx, 6)
If UF.TextBox1  "Notiz:" Then Notiz = UF.TextBox1
If UF.TextBox2  "Vers:" Then Version = UF.TextBox2
End If
Set DBWb = Workbooks(DBDatei).Worksheets(DBBlatt)
Set DBLö = Workbooks(DBDatei).Worksheets(DBLösch)
lZell = DBWb.Cells(Cells.Rows.Count, "E").End(xlUp).Row
löZell = DBLö.Cells(Cells.Rows.Count, "E").End(xlUp).Row + 1
'SuchName auf DB Format formatieren  473.123.123
Txt = Artikel  'für Artikel mit "."
If InStr(Txt, ".") = 0 Then _
Txt = Mid(Txt, 1, 3) & "." & _
Mid(Txt, 4, 3) & "." & Mid(Txt, 7, 3)
'Vorprüfung ob Artikel in DB vorhanden ist?
For Each AC In DBWb.Range("E3:E" & lZell)
If AC.Value = CLng(Artikel) Or AC.Value = Txt Then
If DBWb.Cells(AC.Row, ("K")) = Rules Then
flg = "okay"  'Breite/ L/ Höhe vergleichen
For j = 1 To 3
Zahl = CDbl(UF.ListBox1.List(Indx, j))
If AC.Offset(0, j)  Zahl Then flg = "No"
Next j
If flg = "okay" Then DbZeile = AC.Row: Exit For
End If
End If
Next AC
'Fehlermeldung wenn Artikel nicht gefunden wurde
If flg = "No" Then MsgBox Artikel & "  Artikel: - in Datenbank nicht gefunden!": Exit Sub
'Sicherheits Abfrage ob Artikel gelöscht werden soll
ok = MsgBox("Soll Artikel:  " & Artikel & " wirklich gelöscht werden ? ", vbOKCancel)
If ok = vbCancel Then Exit Sub
'Daten in Blatt "gelöschte Daten" kopieren
Zahl = DBLö.Cells(Cells.Rows.Count, "A").End(xlUp)
DBWb.Cells(DbZeile, 2).Resize(1, 12).Copy _
DBLö.Cells(löZell, 2)  'direkt kopieren
'Datum und Lauf Nr hinzufügen  (gelöschte Daten)
DBLö.Cells(löZell, 2).Value = Now
DBLö.Cells(löZell, 1).Value = Zahl + 1
'Notiz und Version nur wenn Zeilen leer sind
If DBLö.Cells(löZell, 4) = Empty And _
Notiz  "" Then DBLö.Cells(löZell, 4) = Notiz
If DBLö.Cells(löZell, 3) = Empty And _
Version  "" Then DBLö.Cells(löZell, 3) = "'" & Version
'extra Lösch Notiz wenn Notiz in DB vorliegt
If Notiz  Empty Then
LöschNotiz = InputBox("wollen Sie eine seperate Lösch-Notiz einfügen?", " Lösch Notiz ..." _
)
If LöschNotiz  Empty Then DBLö.Cells(löZell, "L") = LöschNotiz
End If
'aktuelle Zeile in Datenbank löschen  (mit Lauf Nr)
DBWb.Cells(DbZeile, 2).Resize(1, 12).Delete Shift:=xlUp
DBWb.Cells(lZell, 1).Value = Empty  'letzte Lauf Nr löschen
Application.CutCopyMode = False
'aktive UserForm 2/3 neu laden
If UF.Name = "UserForm2" Then Call UserForm2_neu_laden
If UF.Name = "UserForm3" Then Call UserForm3_neu_laden
End Sub

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige