| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
|
Autor
|
Thema: VBA / ODBC / SQL (2552 mal gelesen)
|
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 07. Jan. 2008 17:03 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen! Ich möchte Daten aus einer bestehenden Datenbank in eine UserForm importieren mittels ODBC / SQL. Dazu habe ich aber noch keinerlei Erfahrung und möchte Euch mal wieder um Hilfe bitten, wie ich da vorgehen muß bzw. kann? Diese Infos stellt die Datenbank mir zur Verfügung. Tablename : PROD_DEFINITION Tablelabel: Artikelstamm Columnname Columntype ColumnLabel ---------------------------------------------------------- PD_NUM VARCHAR(25) Artikelnummer PD_BEZ VARCHAR(200) Artikelbezeichnung M_MATGRUPPE_ID INTEGER Materialgruppe M_LAGER_ID INTEGER Lagercode M_BESTELLTEXT MEMO Bestelltext M_LIEF_PD_NUM VARCHAR(20) Artikelnummer Lieferant Die Inhalte sollen in einer TextBox eingezeigt werden. Kann mir da jemand helfen? Danke. Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 07. Jan. 2008 17:11 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
|
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002
|
erstellt am: 07. Jan. 2008 19:42 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
|
dj_assp Mitglied Tech. Angestellter

 Beiträge: 50 Registriert: 02.10.2006 Autocad VBA
|
erstellt am: 10. Jan. 2008 08:35 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
Hallo Dirk Ich weis nicht ob du dein Problem schon gelöst hast! Ich habe einmal ein Program geschrieben mit dem man aus einer Access Datenbank Textbausteine entnehmen kann. Ich habe es so gelöst: gDatenbank = "c:\temp\erdb.mdb" Dim dbErdb As ADODB.Connection Dim rdX2 As ADODB.Recordset Dim intRecords As Integer Dim ID As String * 5 Dim DEText As String * 255 Dim ENText As String * 255 Dim RUText As String * 255 Dim Zeile As String Set dbErdb = New ADODB.Connection With dbErdb .CursorLocation = adUseClient .Mode = adModeShareDenyNone .Provider = "Microsoft.Jet.OLEDB.4.0" .Properties("Data Source") = gDatenbank .Open End With Set rdX2 = New ADODB.Recordset With rdX2 .ActiveConnection = dbErdb .CursorLocation = adUseClient .CursorType = adOpenKeyset .LockType = adLockOptimistic .Source = "SELECT * FROM Sheet1" .Open End With For intRecords = 0 To rdX2.RecordCount - 1 If rdX2.Fields(0) <> 0 Then ID = rdX2.Fields(0) Else ID = "keine Id / no id" End If If rdX2.Fields(2) <> 0 Then DEText = rdX2.Fields(2) Else DEText = "kein Text / no text" End If If rdX2.Fields(1) <> 0 Then ENText = rdX2.Fields(1) Else ENText = "kein Text / no text" End If If rdX2.Fields(3) <> 0 Then RUText = rdX2.Fields(3) Else RUText = "kein Text / no text" End If Zeile = ID & Chr(9) & Trim(DEText) & " --/-- " & Trim(ENText) & " --/-- " & Trim(RUText) ListBox1.AddItem (Zeile) rdX2.MoveNext Next intRecords Vieleicht hilft es dir. Grüss Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 15. Jan. 2008 06:55 <-- editieren / zitieren --> Unities abgeben:         
|
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003 AutoCAD 2021/2022 CAD+T HP ZBook 15 G4, 64-bit, WIN 10 Pro
|
erstellt am: 12. Dez. 2008 09:11 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen! Leider komme ich erst jetzt wieder dazu mich um meine Dantenbankanbindung zu kümmern. Mit Eurer Hilfe hatte ich es geschafft und es läuft recht gut. Wie kann ich den noch einen Filter einbauen, so aus der Datenbankspalte PD_NUM nur die Artikel beginnend mit FST in meinem ListView angezeigt werden? Dieses ist mein Aufhänger und ich komme nicht auf die genaue Syntax.
Code:
Set rs = db.OpenRecordset("select count(FST*)From PD_NUM" & "Artikelstamm")
Kann mir da jemand weiter helfen. Vielen Dank. Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 12. Dez. 2008 09:59 <-- editieren / zitieren -->
Hi Dirk Zitat: select count(FST*)From PD_NUMArtikelstamm
Dein Statement würde nicht funktionieren, oder? Filterung mit Sql wird mit WHERE gemacht, z.B. Code: SELECT * FROM ARTIKEL WHERE BEZEICHNUNG like "FST*"
es kann jetzt je nach SQL-Engine statt dem FST* ein FST% notwendig sein (als Ersatz für Wildcharacter)- alfred -
|
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 12. Dez. 2008 10:56 <-- editieren / zitieren --> Unities abgeben:         
Hallo Alfred! Vielen Dank für die Info. Ich habs nun so gelöst und es funktioniert. Code:
'---Filter für Artikelbezeichnung setzen------------------------------ Select Case True Case opbDBFST.Value Set rs = db.OpenRecordset("SELECT * FROM Artikelstamm WHERE PD_NUM LIKE 'FST*'") Case opbDBPOL.Value Set rs = db.OpenRecordset("SELECT * FROM Artikelstamm WHERE PD_NUM LIKE 'POL*'") Case opbDBWST.Value Set rs = db.OpenRecordset("SELECT * FROM Artikelstamm WHERE PD_NUM LIKE 'WST*'") End Select
Nochmals Danke an alle. Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003 AutoCAD 2021/2022 CAD+T HP ZBook 15 G4, 64-bit, WIN 10 Pro
|
erstellt am: 13. Dez. 2008 14:22 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen! Mit der Verbindung und der Abfrage zu einer Access - Datenbank funktionierts jetzt echt gut. Bei dieser Access - Datenbank handelt es sich bislang aber um eine Testumgebung. Verbindung zur Access - Datenbank:
Code:
Dim db As DAO.Database Dim rs As DAO.Recordset Dim LItem As ListItem '---Variablen setzen Set db = OpenDatabase(OptionenFST.TextBoxSQLdat.Text & "\Borm_SQL.mdb") Set rs = db.OpenRecordset("SELECT * FROM Artikelstamm WHERE PD_NUM LIKE '" & Kriterium & "'")
Nun soll ich eine SQL 2005 Enterprise Datenbank über ODBC verknüpfen. Diese habe ich im WWW dazu gefunden. Hier wird aber anscheinend die SQL - Datenbank direkt angesprochen, oder?
Code:
' Connection SQL-Server 2005 mit SQL Authentifizierung Dim oConn As ADODB.Connection Set oConn = New ADODB.Connection With oConn .Provider = "SQLNCLI.1" .Properties("Data Source") = "Servername" .Properties("User ID") = "Benutzername (SA)" .Properties("Password") = "Passwort" .Properties("Initial Catalog") = "Start-DB" .CursorLocation = adUseClient .Open End With
Wo liegt da nun der Unterschied zu ODBC, oder anders gefragt, wie muß die Verbindung über ODBC lauten? Vielen Dank im voraus. Gruß Dirk
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002
|
erstellt am: 13. Dez. 2008 15:38 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
Hi Dirk, Nur mal ne Frage am Rande. Willst du die Datenbank nur Abfragen, oder willst du (später) auch noch in die Datenbank schreiben?! Kannst du nicht von dem Lieferanten deiner Datenbank eine Schnittstelle bekommen?! Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003 AutoCAD 2021/2022 CAD+T HP ZBook 15 G4, 64-bit, WIN 10 Pro
|
erstellt am: 15. Dez. 2008 08:30 <-- editieren / zitieren --> Unities abgeben:         
|

| |
Stefan1905 Mitglied Dipl.-Ing.

 Beiträge: 18 Registriert: 07.01.2009 XP prof 5.1.2600 SP3 Build 2600 Prozessor:x86/15/1/2 Genuine 1700 MHz AUTOCAD MECHANICAL 2006 OFFICE 2003
|
erstellt am: 07. Jan. 2009 11:39 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
|