| |
VB & DatenbankenEndlos- Textbox, alle Werte ausgeben | | | Autor: Annabelle | Datum: 08.12.04 11:50 |
| Hallo
Ich habe ein großes Problem mit Textfeldern.
Ich arbeite mit A97 und VBA,
die Textfelder eines Endlosformulars sollen per ButtonKlick in die Zwischenablage kopiert werden, diese Funktion klappt auch soweit. Nur diese Textfelder nehmen ja mehrere Werte an. Z.B.: Textfeld "Name" nimmt in der ersten Zeile "meier" an und in der nächsten dann "Müller"
die Copy Funktion kopiert allerdings nur die erste Zeile und nicht die anderen Werte die das textfeld aufnimmt.
so. Das Problem sehe ich hier:
Private Sub CopyButton_Click()
Dim Clip As String
Clip = Name.Value & vbTab & nachname.Value & vbTab _
& Hausnummer.Value & vbTab & Straße.Value & vbTab _
& Bemerkung.Value & vbTab
Call ClipBoard_SetData(Clip)
End Sub
ClipBoard_SetData funktioniert. Ich denke eher das ich anstelle von Value vielleicht eine andere Sache brauche, so das er vielleicht ähnlich wie in einer Schleife alle Werte holt.
War das verständlich? Ich arbeite noch an einer Beispiel DB falls die nötig ist, bitte bescheid geben | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 08.12.04 12:56 |
| Hi Annabell,
jede Zeile in deinem Endlosformular repräsentiert doch einen Datensatz. Normalerweise hat dieser Satz ja dann auch einen eindeutigen Key.
Und irgendwie gehören alle diese Datensätze logisch zu einem referenzierenden anderen Satz einer anderen Tabelle. So mach ich das zumindest immer. D.h. du mußt eine Abfrage generieren, welche dir alle Datensätze deines Endlosformulares anzeigt, welche zu dem aktuellen referenzierenden Satz gehören, oder arbeitest du nicht mit einem Unterformular(Verknüpfung zweier Formulare durch Schlüssel- bzw. Fremdschlüssel)
Gruß Armin
P.S.: always look on the bright side of Life! | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 08.12.04 13:31 |
| Hi Annabell,
Also wenn ich das richtig verstehe, stehen in deinem Formular alle Datensätze, welche auch in der zugrundel iegenden Tabelle stehen oder?
in dem Fall ist die einfachste Lösung dann gleich die Tabelle auszulesen.
Gruß Armin
P.S.: always look on the bright side of Life! | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 08.12.04 13:48 |
| aaaaaaaaaah, da ist er ja wieder der schöne Satz zum Schluß, hatte ihn schon vermisst.
Dann würde ich eine Abfrage generieren
(falls diese nicht schon existiert, welche die Auswahlkriterien beinhaltet, und dann diese Abfrage auslesen.
Gruß Armin
P.S.: always look on the bright side of Life! | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 08.12.04 13:59 |
| Hab jetzt mal schnell so'n Endlosformular entworfen.
sehe als einzige Möglichkeit wirklich nur die Datensatzherkunft des Formulares auszulesen.
Gruß Armin
P.S.: always look on the bright side of Life | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 08.12.04 14:28 |
| Hi Annabell,
Ich habs kurz nachgestellt, also so funzt der Spass, als Verweis mußt du natürlich 'MicrosoftDAO3.6 Object Library setzen
Gruß Armin
P.S.: always look on the bright side of Life!
Dim Clip As String
Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone
While Not rs.EOF
Clip = rs!ID_Feld & vbTab & rs!Feld2 & vbTab
Clip = Clip & rs!Feld3 & vbTab & rs!Feld4 & vbTab
Clip = Clip & rs!Feld5 & vbCrLf
rs.MoveNext
Wend | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 08.12.04 14:42 |
| Also, in deinem Endlosformular ist als Datenherkunft eine Tabelle oder eine Abfrage angegeben, und wenn da nicht, dann spätestens bei der Feldeigenschaft 'Steuerelementinhalt. Und genau diese Datenherkunft kann man ja auslesen. Mit DAO geht das so:
dim db as database
Set db = CurrentDb
dim rs as recordset
Set rs = db.OpenRecordset("Deine Tabelle oder Abfrage")
rs.MoveFirst
Do While rs.EOF = False
Feld1 = rs!Feldname1
rs.MoveNext
Loop | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 08.12.04 15:07 |
| klar, weil er ja in dem Fall den ersten Zeitstempel immer mit dem nächsten überschreibt. Also wirst du die Daten nach jedem gelesenen Satz am besten gleich in eine Excel -File schreiben.Alles nötige hierfür steht hier mit drin:
Verweis auf Microsoft Excel setzen nicht vergessen.
Dim xlAPP As Object
On Error GoTo Fehler ‚ Verweist in Fehlerroutine(wichtig für ‚Get Object’ und ‚open’)
' bereits geöffnetes Excel verwenden
'Set xlAPP = GetObject(, "excel.application")
' neue Excel-Session erstellen
Set xlAPP = CreateObject("excel.application")
' Excel sichtbar machen
xlAPP.Visible = True
' Excelrückfragen deaktivieren
xlAPP.DisplayAlerts = False
' Abarbeitung von VBA-Ereignissen in XLS-Dateien verhindern
xlAPP.EnableEvents = False
' öffnet eine bestehende Datei
'xlAPP.Workbooks.Open "C:\Mappe.xls"
' erzeugt eine neue Arbeitmappe(Datei)
xlAPP.Workbooks.Add
' Blatt durch Blattindex aktivieren
xlAPP.ActiveWorkbook.Worksheets(2).Select
' alle Blätter zählen
txtAnzSheets.Text = XLBook.Worksheets.Count
‘Blattname ermitteln
Set XLSheet = XLBook.Worksheets(n)
sheetName = XLSheet.Name
' oder Blatt durch Name aktivieren
xlAPP.ActiveWorkbook.Worksheets("Tabelle2").Select
' in die Zelle (zeile 5, spalte 2) "Text" eintragen
xlAPP.Cells(5, 2) = "Text"
' in die Zelle D8 "Text" eintragen
xlAPP.Range("D8") = "Text in Zelle D8"
'Formel in eine Excel – Zelle eintragen
Worksheets(sheetindex).Range(R1).Formula = Formel
' in die Zelle A?(Variable:ZZ) "Text" eintragen
R1 = "A" & Int(ZZ)
XLSheet.Range(R1).Value = "Name"
' speichert die aktuelle Arbeitsmappe
xlAPP.ActiveWorkbook.Save
' speichert die aktuelle Arbeitsmappe unter einen neuen Namen
xlAPP.ActiveWorkbook.SaveAs "C:\Mappe.xls"
' schließt die aktuelle Arbeitsmappe und verwirft
' nicht gespeicherte Änderungen
xlAPP.ActiveWorkbook.Close False
' Excel beenden
xlAPP.Quit
' Speicher freigeben
Set xlAPP = Nothing
XLSheet.Cells.WrapText = False ' Zeilenumbruch ausschalten
R1 = "A1:B" & Int(ZZ)
XLSheet.Range(R1).Select
XLSheet.Range(R1).Columns.AutoFit 'Formatiert selektierte Spalten in optimale 'Breite
Fehler:
Select Case Err.Number
Case 429 ' Excel lief nicht - Excel starten
Set XLApp = CreateObject("Excel.Application")
If XLApp Is Nothing Then
' Fehler: Excel nicht vorhanden!
MsgBox msgNoExcel, vbExclamation
Exit Sub
Else
Set XLApp = CreateObject("Excel.application")
Resume Next
End If
Case 1004
'Datei nicht vorhanden Neue Datei erstellen
Set XLBook = XLApp.Workbooks.Add
Dateivorhanden = False
Resume Next
Case Else
MsgBox Err.Description
Screen.MousePointer = 1
End Select
End Sub | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 09.12.04 13:51 |
| Hi Anabell, Also um meine Zeit mußt du dir schon mal gar keine Gedanken machen. Das ist das einzige von dem ich hier wirklich mehr als genug habe. Und als stellvertretender Betriebsrat in unserm Laden helfe ich natürlich einer Volkswagenmitarbeiterin welche ja um ihren Job fürchten muß(Hartz sei Dank) sehr gerne.
So und nun zu deinem Prob mit den Daten. Ich dachte nämlich schon, dass in einem Endlosformular alle Datensätze gezeigt werden, welche auch in der Tabelle der Datenherkunft stehen.
auf einer berechnung/ auswahl basiert also =[name] & WENN .....
Auch dieses Feld muß irgendeinen Namen haben. Wo wird denn diese auswahl bzw. Berechnung vorgenommen? Mann könnte ja dann eine eigene SQL-Abfrage generieren, die all die Kriterien enthält, welche auch auf die Daten auf deinem Formular angewendet werden. Die Syntax iss zwar nich gerade ganz einfach, aber da helf ich dir schon bei, damit dass dann hinhaut.
Da gibts aber ein Problem: Wenn ich anstattt * FROM, text1, text2 ... FRom nehme
dann sagt er " 2 Parameter erwartet und zu wenig bekommen" was soll das denn bedeuten?
Hier könnt ich mir jetzt vorstellen, dass die Datenherkunft auf einer Abfrage beruht in der Kriterien angegeben sind. Feld1 Feld2 from Tabelle where Feld1 = "irgendwas" und Feld2 = "irgendwas". Und wenn nun dieses irgendwas der Abfrage im Moment des Aufrufens nicht zur verfügung steht, dann meckert die Abfrage die fehlenden Parameter an.
So ne Ferndiagnose ist halt auch echt immer blöd, wenn man das Ding nicht vor sich hat. Aber bis jetzt bist du ja schon ein ganz gutes Stück weiter gekommen. Und zusammen werden wir das Kind schon schaukeln. Ich für meinen Teil helf dir gern, denn hier such ich nun schon seit 3 Jahren nach der Arbeit, und so langsam gehn mir hier die Ideen aus. Naja, ab 10.01.05 hab ich endlich wieder ein komkretes Projekt für einen Kunden zu proggen, da gehts dann wieder aufwärts.
Ach ja, bis nächste Woche Donnerstag müssten wir dein Prob gelöst haben, da ich dann im Urlaub bin und hinterher beim Kunden, und somit nicht mal mehr ich dir hier antworten kann.
Grüße Armin
P.S.: always look on the bright side of Life! | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Annabelle | Datum: 09.12.04 14:11 |
| Auch dieses Feld muß irgendeinen Namen haben. Wo wird denn diese auswahl bzw. Berechnung vorgenommen?
= Ja hat es , es heißt StoerBez2 und das =name und so weiter steht unter SteuerelementInhalt.
Ja also der Button der dieses Formular öffnet, hat ein Button_Click Ereignis, die WHERE Klausel dort filtert lediglich nach einigen ID- Nummern, die zu Komponenten gehören die dort ausgewertet werden sollen. Also er zeigt dann in unserem ProblemFormular die jenigen Komponenten wo die ID zum Beispiel zw 3 und 7 liegt.
Weiter kann ich da nichts großartiges erkennen, aber wie gesagt ich bin nicht wirklich gut.
Was ich nicht verstehe ist, warum das so kompliziert ist. Ich meine an dem Punkt wo ich den Button "kopieren" klicke, der ja die Sachen in den ZwSp holen soll, stehen alle daten doch schon fertig berechnet in den Textfeldern, dann muss es doch möglich sein einfach zu sagen, nimm die textfelder 1,2,3 und kopiere deren inhalte bis keine inhalte mehr bereit stehen, also das endlosformular am ende ist
Ich hab eigentlich ab Montag urlaub aber da ich eh nich wegflieg oder ähnliches werde ich wohl auch noch nächste woche herkommen, sonst kann ich nicht ruhig schlafen ;)
t?tet keine v?gel, wir v?geln auch keine toten! | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 09.12.04 15:08 |
| Tja das Problem in dem Fall ist, dass das Endlosformular nur ein ansprechbares Feld hat, welches aber so oft erscheint, wie die Tabelle Sätze hat. Ich hab auch schon geschaut ob es vielleicht einen Index bei den Feld-Eigenschaften gibt über den man das jeweilige angezerigte Datenfeld ansprechen könnte, aber den gibts leider nicht.
Also bleibt in dem Fall wohl wirklich nur die Möglichkeit einen Recordset zu erzeugen, in dem genau die Daten stehen, welche auch im Formular angezeigt werden. Kuck doch mal, ob du das Coding des Button_Click Ereignises hier posten kannst, vielleicht kommen wir ja damit weiter. Und ich will nie wieder lesen, dass du behauptest, dass du nicht gut wärest. denn wer will sich anmaßen dass zu behaupten. wer oder was ist schon gut. In unserem IT - Bereich versucht doch jeder sein bestes, aber man(und auch frau) kann schlieslich nicht alles wissen. und wenn du noch anfängerin mit Access bist, da dauert es schon ne Weile bis man das raus hat, fiel mir anfangs auch nicht gerade leicht. Ich hab vorher 3 Jahre lang SAP gemacht, und das ist schon ne ganz andere Art der Programmierung. Also lass jetzt nur nicht den Kopf hängen oder dich entmutigen weil das nun nicht auf anhieb so Super funzt. Irgendwann klappts schon, weils schlieslich für alles ne Lösung gibt, und das vor allem in Access.
Gruß armin
P.S.: always look on the bright side of Life! | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 10.12.04 09:14 |
| Hi Annabell,
hab dein Mail bekommen, und gleich am Beginn des Lesens eine Idee gehabt, welche möglicherweise das Problem löst.
Aber nein, so einfach isses nun auch nicht.
Wir probieren jetzt was anderes.
und zwar in deinem Button_click_Ereigniss sollte es eigentlich möglich sein dem local definiertem Recordset die recordsource-Eigenschaft des Formulares zuzuweisen. und zwar so:
sqlState ist glaub ich schon als string definiert, wenn nicht dann tun.
sql = Forms!StoerungenKomponenten.RecordSource
Set rs= db.OpenRecordset(sqlState)
Und jetzt müßten dann eigentlich im Recordset 'RS' all die Sätze stehen, welche auch im Formular angezeigt werden. OProbiers einfach mal aus, aber ich glaube mit dem Lösungsansatz könntest du es recht einfach schaffen.
Gruß Armin
P.S.,: always look on the bright side of Life! | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 10.12.04 10:06 |
| du mußt die db noch zuweisen:
Dim SqlState As String
Dim rs As DAO.Recordset
Dim db As DATABASE
set db = currentdb
SqlState = Forms!StoerungenKomponenten.RecordSource
Set rs = db.OpenRecordset(SqlState)
und hier dann vielleicht? wieder den rs in einer Schleife auslesen, wie gestern besprochen
Call ClipBoard_SetData(rs)
müßte so eigentlich funzen, aber wie gesagt, dass ist nur so ne Idee von mir. Ich bin ja auch kein Profi. hab aber festgestellt, dass man mit rumprobieren in Acess recht weit kommt.
Gruß Armin
P.S.: always look on the bright side of Life! | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 10.12.04 11:14 |
| Hi Annabell,
also erst mal freu ich mich riesig, dass das mit der Recordsetzuweisung schon mal funzt, wie gesagt war ja nur so ne Idee.
also in rs!Zeitstempel müßte jetzt eigentlich genau der Wert stehen, welcher auch im Formular angezeigt wird, außer da gibts irgendwo noch eine Ereignissprozedur, wo irgendwas an der Datums- bzw. Zeitausgabe verändert wird. Und da fällt mir gerade noch ein, dass ja zumindest in einem Feld noch eine Where - Bedingung stand. Diese müßte man dann beim Auslesen des RS noch über eine If Abfrage einbauen. So nach dem Muster ungefähr:
While Not rs.EOF
Clip = rs!Zeitstempel & vbTab & rs!DauerKompakt & vbTab
if rs!DefektBez = 'Die Where Bedingung aus dem Feld' then
Clip = Clip & rs!DefektBez & vbTab
else
Clip = Clip & "Kein Eintrag oder so"& vbTab
endif
Clip = Clip & rs!MassnameBez & vbCrLf
rs.MoveNext
ob der Zeitstempel noch irgendwo geändert wird findest du am besten mit der Suchfunktion im VB - Editor heraus.
Also ich denke so langsam haut das dann schon hin oder?
Gruß Armin | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 10.12.04 11:42 |
| Hi Annabell(oder Anna wenn du nix dagegen hast, wobei ich Annabell echt schön find, is nur so lang zum schreiben)
mal eben vergessen auf den ersten Satz zu springen, sorry mein Fehler, hab in der Hektik(denn heute muß ich nebenher auch noch n bischen was fürs Geschäft machen, und wie das eben immer so ist, ist's natürlich GANZ dringend HI HI, iss ja auch schon erledigt!) einfach nicht dran gedacht.
Set rs = db.OpenRecordset(SqlState)
rs.moveFirst
While Not rs.EOF
so jetzt müsstest du dann alle Sätze einlesen.
Grüßle Armin
P.S.: always look on the bright side of Life! | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 10.12.04 12:01 |
| Oder meinst du damit das Feld mit dem =Wenn und so weiter? ---> genau das meuine ich. Ich gehe momentan davon aus, dass dieses Feld wie alle andern auchj im RS steht, aber durch das wenn usw. noch geändert bzw. nur unter bedingten Bedingungen angezeigt wird. Und mit der If Bedingung kriegst du das dann auch in dein Clip mit rein.
also nerven kannst DU mich hier nich. Ersten´s hab ich die Zeit, zweitens bist du ja recht nett(ich hab da schon ganz andere Postings gesehn), und drittens ist dein Problem wirklich nicht so'n Minifurzscheiß sondern schon ganz schön dicke, wie man an der where - Bedingung ja ganz klar sieht.Und zu guter letzt sehe ich das ganze durchaus so: 'wenn man mir hier nicht soviel geholfen hätte, wäre ich immer noch ne ganz schöne Pfeife in Access - Programmierung. Also ist es nur fair, wenn ich mein hier erworbenes Wissen auch hier wieder weitergebe.
Die where - Besdingung würde ich in einer String - konstanten hinterlegen(oder noch besser: genauso einmal auslesen wie den SQL - String für den RS), damit der Wahnsinn nicht mitten im Coding steht. zudem läss sich das Programm dadurch leichter pflegen. und lass dich jetzt ja nicht von dem Prob fertig machen, das isses nich Wert, soviel Geld kann dir kein Mensch zahlen, unbd der VW - Konzern schon gleich gar nicht. Außerdem biste ja nun schon ganz schön weit gekommen oder?
UM alle Sätze zu lesen, lies meine Antwort ein Posting darüber.
Gruß Armin
P.S.: always look on the bright side of Life! | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Annabelle | Datum: 10.12.04 12:15 |
| " Die where - Besdingung würde ich in einer String - konstanten hinterlegen(oder noch besser: genauso einmal auslesen wie den SQL - String für den RS), damit der Wahnsinn nicht mitten im Coding steht. "
Du meinst mir WHERE Bedingung immernoch die Wenn Bedingung? -kommunikationsschwierigkeiten Aber ich verstehe nicht wie ich das auslesen soll, also meinst du ich soll ne variable machen und diese bekommt den recordset von dem textfeld StoerBez2 in dem ja die Wenn klausel drin ist ?
Wenn du das nicht so meinst dann bin ich verwirrt, ich probiers trotzdem schonmal | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 10.12.04 12:50 |
| Hi Anna,
also die loop Version gegfällt mir persönlich besser, das is abernatürlich reine Geschmackssache.
Wenn du den Aufruf:
Call ClipBoard_SetData(Clip)
nach der Schleife hast, dann ist da natürlich immer nur der letzte Satz drin.
Ich weiß ja nicht was die SetData() macht und empfangen kann(z.B. Excel - File, CSV - File oder so? Also entweder den Funktionsaufruf innerhalb der Schleife für jeden Satz einmal, oder nach der Schleife, aber dann müssten alle Sätze in eine Datei geschrieben werden.
Früßle Armin | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 10.12.04 12:56 |
| Hi Annabelle(noch schöner),
Sorry logisch mein ich die Wenn- Bedingung und siehste du bist eben doch nicht schlecht, denn genau so hab ich das gemeint. Eine Variable die die Wenn - Bedingung dieses Feldes einmal ausliest. das hat den Vorteil, dass wenn die Wenn - Bedingung im Formular - Feld einmal geändert wird, muß niemand mehr dein jetziges Coding ändern.
Gruß Armin
P.S.: always look on the bright side of Life! | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Annabelle | Datum: 10.12.04 13:04 |
| Das ist diese Clipboards Funktion die ich benutze.
Option Compare Database
Option Explicit
Declare Function OpenClipboard Lib "user32" (ByVal hWnd As Long) As Long
Declare Function CloseClipboard Lib "user32" () As Long
Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
Declare Function EmptyClipboard Lib "user32" () As Long
Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags&, ByVal dwBytes As Long) As Long
Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long
Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Const VK_SNAPSHOT = &H2C
Type RECT_Type
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Declare Function GetActiveWindow Lib "user32" () As Long
Declare Function GetDesktopWindow Lib "user32" () As Long
Declare Sub GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT_Type)
Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Declare Function CreateCompatibleBitmap Lib "gdi32" _
(ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, _
ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal XSrc As Long, ByVal YSrc As Long, ByVal dwRop As Long) As Long
Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hdc As Long) As Long
Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Public Const GHND = &H42
Public Const CF_TEXT = 1
Public Const MAXSIZE = 4096
Global Const SRCCOPY = &HCC0020
Global Const CF_BITMAP = 2
Function ClipBoard_GetData()
Dim hClipMemory As Long
Dim lpClipMemory As Long
Dim MyString As String
Dim retval As Long
If OpenClipboard(0&) = 0 Then
MsgBox "Cannot open Clipboard. Another app. may have it open"
Exit Function
End If
hClipMemory = GetClipboardData(CF_TEXT)
If IsNull(hClipMemory) Then
MsgBox "Could not allocate memory"
GoTo OutOfHere
End If
lpClipMemory = GlobalLock(hClipMemory)
If Not IsNull(lpClipMemory) Then
MyString = Space$(MAXSIZE)
retval = lstrcpy(MyString, lpClipMemory)
retval = GlobalUn
Lock (hClipMemory)
MyString = Mid(MyString, 1, InStr(1, MyString, Chr$(0), 0) - 1)
Else
MsgBox "Could not lock memory to copy string from."
End If
OutOfHere:
retval = CloseClipboard()
ClipBoard_GetData = MyString
End Function
Function ClipBoard_SetData(MyString As String)
Dim hGlobalMemory As Long, lpGlobalMemory As Long
Dim hClipMemory As Long, X As Long
hGlobalMemory = GlobalAlloc(GHND, Len(MyString) + 1)
lpGlobalMemory = GlobalLock(hGlobalMemory)
lpGlobalMemory = lstrcpy(lpGlobalMemory, MyString)
If GlobalUnlock(hGlobalMemory) <> 0 Then
MsgBox "Could not unlock memory location. Copy aborted."
GoTo OutOfHere2
End If
If OpenClipboard(0&) = 0 Then
MsgBox "Could not open the Clipboard. Copy aborted."
Exit Function
End If
X = EmptyClipboard()
hClipMemory = SetClipboardData(CF_TEXT, hGlobalMemory)
OutOfHere2:
If CloseClipboard() = 0 Then
MsgBox "Could not close Clipboard."
End If
End Function
Function ScreenDump()
Dim AccessHwnd As Long, DeskHwnd As Long
Dim hdc As Long
Dim hdcMem As Long
Dim Rect As RECT_Type
Dim junk As Long
Dim fwidth As Long, fheight As Long
Dim hBitmap As Long
DoCmd.Hourglass True
DeskHwnd = GetDesktopWindow()
AccessHwnd = GetActiveWindow()
Call GetWindowRect(AccessHwnd, Rect)
fwidth = Rect.Right - Rect.Left
fheight = Rect.Bottom - Rect.Top
hdc = GetDC(DeskHwnd)
hdcMem = CreateCompatibleDC(hdc)
hBitmap = CreateCompatibleBitmap(hdc, fwidth, fheight)
If hBitmap <> 0 Then
junk = SelectObject(hdcMem, hBitmap)
junk = BitBlt(hdcMem, 0, 0, fwidth, fheight, hdc, Rect.Left, Rect.Top, SRCCOPY)
junk = OpenClipboard(DeskHwnd)
junk = EmptyClipboard()
junk = SetClipboardData(CF_BITMAP, hBitmap)
junk = CloseClipboard()
End If
junk = DeleteDC(hdcMem)
junk = ReleaseDC(DeskHwnd, hdc)
DoCmd.Hourglass False
End Function
Function PrtScn(Alles As Boolean)
If Not Alles Then
keybd_event VK_SNAPSHOT, 0, 0, 0
'bScan einfach auf 1:
Else: keybd_event VK_SNAPSHOT, 1, 0, 0
End If
End Function
Function ClipBoard_Clear()
Call OpenClipboard(0&)
Call EmptyClipboard
Call CloseClipboard
End Function
t?tet keine v?gel, wir v?geln auch keine toten! | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 10.12.04 13:24 |
| Puh, das iss für mich nun auch zu hoch,
Da heißt es einfach nur ausprobieren, der PC wird schon nicht gleich explodieren.
was macht due Funktion denn? wenn ich mal blöd fragen darf HI HI
Gruß Armin
P.S.: always look on the bright side of Life! | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 10.12.04 13:36 |
| Puuh, da bin ich glaub ich jetzt endlichziemlich überfordert.
Also was: =[QU] das heißt? keine ahnung, schau doch mal ob du irgendwo in der Hilfeas findest.
Mit der WQenn - Bedingung, ist das glaub ich so, dass die Wenn bedingung bis zum letzten Komma geht, und was danach steht ist dann glaub ich das was pasieren soll wenn die Wenn - Bedingung stimmt. Aber leg mich da jetzt bitte nicht drauf fest. Sorry, aber ich sag ja, ich bin auch nur Anfänger(also zumindest kein Profi) aber den gibts glaub eh nicht, dazu ist VB und Access viel zu gross um da alles zu beherschen.
So Annabelle für heut muß ich dich allein lassen mit deinem Prob, ich hab jetzt dann gleich Feierabend. Schau doch mal was du bis Montag noch so alles rausfinden kannst. Hier, in der Hilfe oder in anderen Foren.
Ich wünsche dir auf jeden Fall ein schönes rughiges und genütliches Adventswochenende. bis demnächst dann wieder hier oder so.
Gruß Armin | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 13.12.04 09:05 |
| Hi Anna, na schönes WE gehabt?
Dann kannsa ja jetzt wieder in die vollen gehen.
Also hier jetzt noch mal die Schleife.
While Not rs.EOF
Clip = rs!Zeitstempel & vbTab & rs!DauerKompakt & vbTab
Clip = Clip & rs!DefektBez & vbTab
Clip = Clip & rs!MassnameBez & vbCrLf
Call ClipBoard_SetData(Clip)
rs.MoveNext
Wend
Und wenn du dein Stoer'Bez Feld doch noch brauchst, müßtest du halt aus der Wenn - Bedingung eine If - Abfrage basteln, und die dann in die Leseschleife mit einbauen.Aber eigentlich solltest du dir nach dem Streass dir jetzt deinen Urlaub gönnen.
Gruß Armin
P.S.: always look on the bright side of Life! | |
Re: GESCHAFFT!!! | | | Autor: Prian0815 | Datum: 13.12.04 10:55 |
| Hi Anna, gern geschehn.Hat auch echt Spass gemacht. wenn du wieder mal so n Prob mit DB hast, darfst mich auch gern anmailen( bin nämlich ab 10.01.05 nich mehr so oft im Büro, und dann iss gscheiter ich krieg n M;ail) die Addi hast du ja.Aber ich denke für die meisten Probs kriegst du auch hier gute Hilfe.
Gruß Armin
P.S.: always look on the bright side of Life | |
Re: GESCHAFFT!!! | | | Autor: Prian0815 | Datum: 13.12.04 11:09 |
| Also erst mal würd ich die Schleife noch n bischen umbauen, ungefähr so:
rs.MoveFirst
While Not rs.EOF
Clip = ""
Clip = Clip & rs!Zeitstempel & vbTab & rs!DauerKompakt & vbTab
und hier(also dann wenn du dein Feld Stoerbez2 brauchst dann das
if (hier die Wenn- Bedingung aus der Feldeigenschaft) then
hier die Dann- Anweissung aus der Feldeigenschaft
clip = clip & stoerbez2
endif
Clip = Clip & rs!DefektBez & vbTab
Clip = Clip & rs!MassnameBez & vbCrLf
rs.MoveNext
Wend
Call ClipBoard_SetData(Clip)
und wie gesagt, die wenn - Bedingung geht glaub ich bis zum ersten Komma, dann müßte die Dann - Anweisung kommen und dann vielleicht noch eine ansonsten. Aber das bekommst du bestimmt über die Hilfe raus.
Gruß Armin
P.S.: always look on the bright side of Life | |
Re: Endlos- Textbox, alle Werte ausgeben | | | Autor: Prian0815 | Datum: 13.12.04 11:13 |
| ooooooooooooooooooooh Mann, und dann geht die gute auch noch auf ein Nazareth - Konzert. Man gehts dir gut. Also da wär ich dann auch sehr gern gewesen, die machen schon wirklich ganz klasse Musik. Aber ich gönns dir, das hast du dir nach dem Stress mit Access wohl verdient.
Gruß Armin
P.S.: always look on the bright side of Life | |
Re: If Anweisung | | | Autor: Prian0815 | Datum: 13.12.04 11:32 |
| Ha, das schaut schon echt krass aus,
=[QU] & Wenn([NKomponente] Ist Null;Wenn([EbeneStufe]>=3;[KomBez3]) & Wenn([EbeneStufe]>=4;" -- " & [KomBez4]) & Wenn([EbeneStufe]>=5;" -- " & [KomBez5]) & Wenn([EbeneStufe]>=6;" -- " & [KomBez6]) & Wenn([EbeneStufe]>=7;" -- " & [KomBez7]);Wenn([EbeneStufe]=3;[NKomponente];Wenn([EbeneStufe]>=4;[KomBez3]) & Wenn([EbeneStufe]>=5;" -- " & [KomBez4]) & Wenn([EbeneStufe]>=6;" -- " & [KomBez5]) & Wenn([EbeneStufe]>=7
ist es möglich? das das ganze ungefähr so ist, FeldStoerbez ist immer QU plus ein Anhang je nachdem wie die Nkomponente bzw. die KomBez oder dieEbeneStufe bestückt sind. Ich werd so auf Anhieb nicht schlau draus, aber irgendwas in der Art muß es sein, ich hab jetzt auch in der Hilfe nix gefunden zum Thema Wenn.
Dafür könntest du vielleicht noch einen extra Beitrag aufmachen. Irgendjemand wirds schon wissen was dieser Steuerelement - Ausdruck bewirkt.
Gruß Armin
P.S.: always look on the bright side of Life | |
Re: If Anweisung | | | Autor: Prian0815 | Datum: 13.12.04 11:58 |
| Yo Annabelle mach das, und genies deinen Urlaub, ich hab mich selten so darauf gefreut wie dieses Jahr. Und wieder von dir zu hören würde mich ehrlich gesagt richtig freuen, hat echt Spass gemacht.
Gruß Armin
P.S.: always look on the bright side of Life | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevOutBar 4.0
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|