Datenaktualisierung in MDB aus dBASE

  • VB.NET

Es gibt 91 Antworten in diesem Thema. Der letzte Beitrag () ist von markusbreitenstein.

    Das Movie Tut macht Freude... aber ein Arbeitsplatz mit einem Bildschirm ist da nicht förderlich... sieht jedenfalls extrem lehrreich aus, daher auch das "hilfreich" angeklickt. Bislang waren alle deine Tipps sehr lehrreich, aber muss noch viel an den Grundlagen arbeiten, sehe ich...

    Dachte nicht, das es so kompliziert wäre, da es ja im Access immer sehr flot geht, aber da hab ich auch die Erfahrung...

    Nachtrag...

    Arbeitsweise wird angepasst und auf dem Bildschirm habe ich nun folgendes

    VB.NET-Quellcode

    1. Public Class artikelliste
    2. End Class


    und daraus muss ja sowas werden :

    VB.NET-Quellcode

    1. Public Class artikelliste
    2. Private Sub artikelliste_Load(sender As Object, e As EventArgs) Handles DataGridView1.GotFocus
    3. Me.Query_artikellisteTableAdapter.GetData()
    4. End Sub
    5. End Class


    vermutlich richtig gearbeitet aber irgendwas falsch gemacht...
    Am lernen...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „markusbreitenstein“ ()

    jo - ohne das Access-Frontend setzt Db-Programmierung voraus, dass man die Programmiersprache kann.
    Also zu denken "ich kann Access, also kann ich vb.net-Datenbank-Anwendungen schreiben" fällt Nase.

    Ich hab hier mal ein Plan gemacht, was man eiglich alles lernen muss: Datenverarbeitungs-Vorraussetzungen

    Wenn du das studierst, merkstu du, dass deine Art Einstieg ziemlich abweicht, vom DatasetOnly, was ich sonst immer als "Entwicklungs-Pfad" empfehle.

    Also ich empfehle DatasetOnly dir auch, gehe aber davon aus, du wirst dich nicht drauf einlassen. Wegen deiner Daten-Vorschau, die ja schon funktioniert, und dir vorgaukelt, du seist dem Ziel nahe ;)
    Ausserdem gehst du über typisierte Tableadapter an die Sache ran, das ist immerhin architektonisch noch akzeptabel.

    Aber letztendlich - wenn dein Projekt fertig ist, wirst du im großen und ganzen ebenso all das gelernt haben (müssen), was in meinem Plan angerissen und weiterverlinkt ist.

    Den Punkt 1.3: Empfohlene VS-Einstellungen hebe ich jetzt sogar extra noch heraus: Je früher du dich dem unterziehst, desto besser (und das ist ganz wörtlich gemeint, und in mehreren Bedeutungs-Hinsichten wörtlich)
    Nun gut, dann ist wohl Lektüre angesagt...

    Dachte, es sei einfacher, aber errare humanum est .... Access ist Access, Visual Studio ist Visual Studio...

    Danke für deine Hilfe und melde mich dann wieder, wenn ich die Lektüre durch habe....
    Am lernen...
    so... viel Lektüre gehabt und Resultat bekommen...

    Mit der ersten Tabelle / Abfrage funktioniert es, besten Dank für sämtliche Hinweise deinerseits.

    Die Lösung war eigentlich simpel, und ist unten ersichtlich , ich hatte das CStr() vergessen......

    VB.NET-Quellcode

    1. Public Class artikelliste
    2. Private Sub artikelliste_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. Me.ArtikelTableAdapter.Fill(Me.DataSet1.artikel2, CStr(Index.FILTER1))
    4. End Sub
    5. End Class
    Am lernen...
    Ja, solche Fehler sind typische Folge, wenn man Strict Off proggt - wieviel Zeit hat das nu gekostet?
    Daher: Visual Studio - Empfohlene Einstellungen

    Und ich möchte fast wetten, du kannst mir noch immer nicht die Datentypen sagen, weder von Index, noch von Filter1.

    Und ich konnte den Fehler auch nicht sehen, ich musste annehmen, Filter1 sei ein String. Aber dass du ihn jetzt mit Cstr() erst zu einem String konvertieren musst, zeigt, dasses wohl doch kein String war.
    Interessiert mich nu wirklich, was das für ein Datentyp ist, den du da konvertierst.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Hallo Erfinder

    ​FILTER1 ist der wert aus der ComboBox im Formular1, welches wiederum den Namen ​Index trägt. Ich bin davon ausgegange, das die Werte als String erkannt werden, da Buchstaben drin waren ( Access lässt grüssen) aber habe bei deinem Tip nachgelesen, das dem nicht so ist...

    Die Namen habe ich so gewählt, weil Index für mich immer der beginn ist, und FILTER1, weil ich nach dem Formular mit der Tabelle weitere Details suchen will, die dann mit FILTER2 gesucht werden... aber das ist noch ein Stück Arbeit...

    wenn du willst, kann ich dir gerne ne ZIP vom ganzen machen, damit du es ansehen kannst... mit den DBF wird es einfach ziemlich gross ;)
    Am lernen...
    hihi - "Wert aus Combobox von Form1" - das ist aber kein Datentyp - egal.

    Oder auch nicht egal, zeigt immerhin, wie notwendig Visual Studio - Empfohlene Einstellungen sind, dass du überhaupt mittelfristig imstande sein wirst, diese GretchenFrage der Programmierung "Welchen Datentyps ist das?" zu verstehen und zu beantworten.

    ErfinderDesRades schrieb:

    hihi - "Wert aus Combobox von Form1" - das ist aber kein Datentyp - egal.


    Der Datentyp war eine String .. hoffe erzähle keinen Quatsch ;)

    Eine andere Frage.. da alles bislang nach Wunsch funktioniert...

    Ich habe eine VB funktion, die ich in einer Abfrage gerne nutzen würde.
    Wo muss ich die speichern ? der Abfrage-Generator verlangt nach einer .prg Datei....

    nachstehend der Code:

    VB.NET-Quellcode

    1. Global Function APL_OPEN2(ID As String) As String
    2. 'Felddefinitionen
    3. Dim strSQL As String
    4. Dim rs As DAO.Recordset
    5. Dim CODE_MAB As String
    6. Dim APL As String
    7. 'Variablen
    8. strSQL = "SELECT APL FROM FERTIG_P WHERE left(CODE,48) = '" & ID & "' AND IST_ENDE IS NULL "
    9. rs = DBEngine(0)(0).OpenRecordset(strSQL)
    10. 'Datensätze suchen
    11. Do While rs.EOF = False
    12. APL_OPEN2 = APL_OPEN2 & " / " & rs!APL
    13. rs.MoveNext()
    14. Loop
    15. APL_OPEN2 = Mid(APL_OPEN2, 4, 300)
    16. 'SZ = ID
    17. rs.Close()
    18. rs = Nothing
    19. End Function
    Am lernen...
    Der teil der Abfrage mit Parameter klappt auch bestens. ich möchte jetzt aber haben, das er die werte des selben feldes von 10 Datensätzen in eine Zelle schreibt, nicht 10 Datensätze.
    In Access klappte das mit der obigen funktion....

    Beispiel:

    Auftrag Artikel arbeitsplatz
    12341234123_1 abcde 170
    12341234123_2 abcde 900
    12341234123_3 abcde 190

    daraus wird:

    12341234123 abcde 170, 900, 190

    Den Auftrag bekomme ich hin, aber das mit dem Arbeitsplatz war eben über die Funktion gelöst...
    Am lernen...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „markusbreitenstein“ ()

    das geht mit TableAdaptern nicht, und auch nicht mit typisiertem Dataset.

    Bzw doch: du kannst mit TableAdapter.GetData(param) dir eine neue typiserte, gefüllte Tabelle erstellen, und die dann mit Standard-Vb-Schleifen durchlaufen, und irgendwas werkeln.
    Das Ergebnis ist dann aber nicht mehr kompatibel zum typDataset - keine Ahnung, was du dann damit machen willst.
    Am Ende will ich auf nem Formular alle Aufträge anzeigen, die in Produktion sind und auch ersichtlich haben, wo sie in der Produktion rumliegen....

    Was Bislang klappt ist:

    Form1 Artikelgruppe auswählen -> Form2 Artikel der Gruppe aus Form1 anzeigen und Artikel auswählen -> Form3 Produktionslisten zum Artikel aus Form2 ausgeben...

    Das klappt alles... blos eben de Sache mit den Arbeitsplätzen noch nicht...
    Am lernen...
    Am lernen...

    Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von „markusbreitenstein“ ()

    ja - und da sieht man auch andere Sachen dran.
    ZB haben keine Datensätze keine Primärschlüssel, und es gibt keine Relationen.
    So kann man eiglich keine DV aufziehen.
    Sind denn in der DB Primärschlüssel und Relationen angelegt?



    Aber zum konkreten Problem: Du willst Werte vieler untergeordneter Datensätze in eine DGV-Zelle stopfen.
    Das kann man machen mit einer ungebundenen Spalte, wenn man dann das DGV_CellFormatting-Event bearbeitet.
    Aber zunächstmal die Datarelations richtig einrichten, sonst wird auch das Generieren der gewünschten ZellWerte ziemlicher Schmuddel-Code.