Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

aus Excel 2010 in sql2008 Server schreiben

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von datenmaus, 22 November 2012.

  1. datenmaus

    datenmaus Benutzer

    Hallo zusammen,

    das ganze soll in Excel2010 per VBA realisiert werden.
    Ich stelle mir in der Maske Textfelder vor und die Werte die ich dort eintrage sollen in einer Tabelle als neuen Datensatz angelegt werden.
    Im Moment ist es nur eine Tabelle auf die ich zugreifen muss, kann aber sein das das erweitert wird.

    Kann mir da jemand Tipps geben wie ich das realisieren kann?
    Gruß und Danke
     
  2. Tommi

    Tommi Datenbank-Guru

    Hallo Datenmaus,

    ich glaube, für deine Anforderung ist Excel das falsche Werkzeug.
    Hast du schon mal über eine Access-Datei mit direkter Verbindung zu einem SQL-Server nachgedacht (Stichwort adp-Datei)?
    Damit kannst du direkt auf der Datenbank arbeiten und somit auch (sogar ähnlich wie in Excel) daten in die Tabellen eintragen.

    Das ist ein recht verbreiteter Weg um eine schnelle Eingabeoberfläche für Datenpflege bereitzustellen.

    Viele Grüße,
    Tommi
     
  3. datenmaus

    datenmaus Benutzer

    Hallo Tommi,

    das ganze ist eine Erweiterung in einem bereits bestehenden Excel VBA. Leider ist das auch nur in Excel möglich.
    Hast du da eine Idee wie ich das Lösen könnte.

    Danke und Gruß
     
  4. Tommi

    Tommi Datenbank-Guru

    Hi,

    in diesem Falle musst du im VBA-Code eine Datenbankverbindung programmieren.
    So lange du alles über eine VBA-Oberfläche einträgst und Daten, die direkt in Tabellen des Excel-Sheets eingetragen werden nicht berücksichtigen mußt, geht das.
    Bei einem Klick auf einen Eingabe-Button kannst du die dort eingegebenen Daten dann im VBA-Code in die Datenbank schreiben,
    Wenn direkt Einträge im Excel-Sheet gemacht werden können und diese dann auch noch in die Datenbank übertragen werden sollen, dann wird es echt schwierig.
    Excel kann zwar Daten aus Datenbanktabellen lesen, aber nicht wieder zurückschreiben.
    Excel ist leider nur ein Auswertungs-Tool und keine Oberfläche zur Datenpflege.


    Viele Grüße,
    Tommi
     
  5. datenmaus

    datenmaus Benutzer

    Hallo Tommi,

    wird alles in einer VBA Oberflaeche sein.
    Hast du zufällig was an vorlagen wie ich sowas aufbauen müsste??

    Gruß und Danke
     
  6. datenmaus

    datenmaus Benutzer

    Hallo Tommi,

    kannst du mir hier vielleicht noch etwas Unterstützung geben, weiß nicht so wirklich wie ich hier vorgeen soll.
    Es wird in der VBA Oberfläche 2 textfelder geben und den wert den ich dort reinschreibe, der soll als neuer datensatz in der Tabelle angelegt werden.

    Wäre super

    Danke
     
  7. Tommi

    Tommi Datenbank-Guru

    Hi,

    ich wollte hier eigentlich etwas detailierter Antworten und mir etwas Zeit dafür lassen.
    Das mit dem "Zeit lassen" klappt bei mir aber leider im Moment nicht, und daher auch leider kein "detaillierter".

    Aber auf der folgenden Seite findest du ein Beispiel für eine Datenbank-Verbindung über ADO.

    http://support.microsoft.com/kb/269882/de

    Es ist bei mir etwas länger her, dass ich das genutzt habe und ich weiß nicht, ob neuere Office-Versionen, die ja inzwischen alle mit .NET umgehen können, hier noch elegantere Methoden bereitstellt (genau deshalb wollte ich mir Zeit lassen, um das herauszufinden). Mit dem Beispiel sollte es aber gehen. Als SQL-Command kann hier natürlich auch ein insert genutzt werden (Berechtigung in der Datenbank berücksichtigen!).

    Ich würde in der Eingabe-Form einen Button "Eintrag" hinzufügen.
    In der VBA-Prozedur, die das Click-Event dieses Button abfängt kannst du dann die DB-Connection aufbauen und die eingetragenen Daten der Form einfügen.

    Viele Grüße,
    Tommi
     
  8. datenmaus

    datenmaus Benutzer

    Hallo Tommi,
    danke das du dir trotzdem etwas zeit genommen hast.
    Ich habe das so getestet un dbekomme zumindest keine Fehlermeldeung.
    So sieht es bei mir aus:

    Public Sub sql_oeffnen()
    Set conn = CreateObject("ADODB.Connection")
    Set Rs = CreateObject("ADODB.Recordset")
    Set Cmd = CreateObject("ADODB.Command")
    conn.Open "Provider=SQLOLEDB;Password=password;Persist Security Info=True;User ID=userid;Initial Catalog=datenbank;Data Source=Server;Network Library=dbmssocn"
    Cmd.ActiveConnection = conn
    datenbank= "Select * from tabelle1"

    Cmd.CommandText = datenbank
    Set Rs = Cmd.Execute
    End Sub

    Aber wie gehts nun weiter, wie schreibe ich etwas in die Tabelle ,lege einen neuen Datensatz an?
    Hänge hier leider komplett und finde auch nichts was mir weiterhilft, oder ich suche falsch.
    Kannst du noch einmal kurz helfen?
    vielen Dank
     
  9. Tommi

    Tommi Datenbank-Guru

    Hi,

    du musst dir nun natürlich einen Kommando-String für den SQL-Server zusammenbauen.
    Du hast geschrieben, dass du nur zwei werte in die Datenbank schreiben willst.
    Auf dem VBA-Formular hast du also zwei Textboxen angelegt. In diese werden die in die Datenbank einzutragenden Werte hineingeschrieben. (Soweit richtig?)

    Angenommen, diese Textboxen heißen Textbox1 und Textbox2.
    Dann wäre im VBA-Code folgende Syntax zu benutzen:

    Code:
    datenbank="INSERT INTO dbo.tabelle1 ([Wert1], [Wert2]) VALUES ( ' " & Textbox1.Text & " ' , ' " & Textbox2.Text & " ' )"
    Du "wirfst" also über die eingerichtete ADO-Connection ein INSERT-Commando zum SQL-Server.
    Die einzutragenden Daten werden aus den Textbox-Feldern deiner Form übernommen und in den SQL-Befehl eingebunden.


    Viele Grüße,
    Tommi
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden