| ||
|
Ergebnisse auf Deutsch für vbs befehl dim
|
| Szukaj:Słowo(a): vbs befehl dim |
Ah, prima, sehr gut! :) Bin leider in VBScript ind JScript nicht so zu Hause, kann besser Pascal und C. Ich habe mir gerade mal ein Skript geschrieben, wobei ich mir die Hilfe der Befehle mit google gesucht habe. Es compiliert, funktioniert jedoch nicht, bei Ausführen beendet sich FixFoto ohne Kommentar, also nehme ich an, daü mein Skript einen Fehler verursacht. Vielleicht ist ja jemand hier so nett und kann mir sagen, wie ich da am besten vorgehe (aber nicht sooo wichtig, kann auch selber rumprobieren). Danke auf jeden Fall! [pre] dim i dim name, fname dim imagenum dim breite, hoehe imagenum = FF_GetImageCount for i = 0 to imagenum - 1 lfname = FF_GetImageName(i) lcall FF_LoadImage(fname) llaenge = Len(fname) lname = Left(fname, laenge-4) lcall FF_SaveImage"cd" &name & ".jpg",100) lcall FF_SaveImage(name & &".tif",100) l lbreite = FF_GetImageWidth() lhoehe = FF_GetImageHeight() lif (breite > hoehe) then l l call FF_HQScale(400,hoehe,true) lelse l l call FF_HQScale(breite,400,true) lend if next [/pre] |
Hallo Woody, Leider kann ich dir nur einen Ansatz geben, da ich nur mir MySql und Vb.net arbeite. Entweder passt du deine StoredProcedure an indem du die einzelnen Spalten die ein Datum enthalten in deiner SELECT-Anweisung Explizit angibst und mit dem FORMAT-Befehl die Ausgabe anpasst. MySql: Code: SELECT DATE_FORMAT(DatumSpalte, '%d-%m-%Y') AS FormatiertesDatum FROM .... Oder du erstellst deie Spalten deiner DataGridView selbst und legst da das Format deiner Datum-Spalte fest. Code: 'Unterdrückt Neuzeichnen-Ereignisse bis zum 'nächsten ResumeLayout; dadurch geht der Aufbau 'der Elemente schneller und wackelt nicht. Me.DataGridView.SuspendLayout() 'Der DataGridView mitteilen, dass es die Spalten nicht Automatisch erstellen soll DataGridView.AutoGenerateColumns = False 'Die Datenquelle an die DataGridView hängen DataGridView.DataSource = ds.Tables(0) Dim DatumSpalte As New DataGridViewTextBoxColumn DatumSpalte.Name = "DatumSpalte" DatumSpalte.DataPropertyName = "" <-- Hier das Feld aus deiner Tabelle DatumSpalte.HeaderText = "Datum1" DatumSpalte.DefaultCellStyle.Format = "yyyy-MM-dd" DataGridView.Columns.Add(DatumSpalte) 'Aufbau der GridView ist beendet. DataGridView.ResumeLayout() Hoffe du kannst was damit anfangen. Gruü, Jeff |
Wichtig help plsss!!! Mit VB 2005 Txt erstellen und in verschiedene Zeile schrei hey, hätte mal ne Frage... ist es Möglich mit Vb2005 einen Belibigen Text in eine Txt Datei schreiben zu lassen? Der Text soll dabei in verschidene Zelle eingetragen werden ( mal Zeile 3 ,mal 5 oder mal auch die 10. Zeile) Gibt es da irgendeinen Befehl das man die Zeile wählen kann die in eine Textdatei geschrieben wird, ich habs bis her so versucht: Dim objStreamWriter As StreamWriter objStreamWriter = New StreamWriter("C:Auswertung_schueler7_Frage7_.txt" ) objStreamWriter.WriteLine("Text ") objStreamWriter.Close() Aber ich kann so nicht die Zeile wählen...auüerdem Soll auf diese Datei mehr mals zugegriffen werden das heiüt im ersten Form wird die Txt erstellt und in Zeile 1 ein Text eingetragen, im nächsten Form soll sie dann wieder geöffnet werden und in Zeile 2 geschrieben werden ich hoffe ihr wisst ne Lösung :P MFG |
Ergebnis von CMD zur TextBox oder ListBox Hallo, ist es möglich eine Abfrage in VB.NET zu machen, welche die CMD aufruft dort einen Befehl ausführt und dieses Ergebnis der CMD in einer TextBox oder ListBox ausgibt?! In meinem Fall: vb.net soll eine Abfrage in der CMD tätigen -> auditpol /get /category:* Dieses ergebnis von "auditpol /get /category:*" soll in einer ListBox ausgegeben werden. Code: Private Sub cmdneu() Dim read = Shell("cmd.exe auditpol /get /category:*") ListBox1.Items.Add(read) End Sub Einer eine Idee? Gruü |
VB -> Delphi Set Hello *.*, im Moment stehe ich vor der Aufgabe, einige VB-Tools nach Delphi 5 zu portieren. Die Tools selbst nutzen einen OLE-Server, nämlich OL2000.<BR> <BR> Da habe ich jetzt auch genau mein Problem. Wie bildet man den Befehl Set in delphi ab, also wie würde nachstehende Routine richtig übersetzt? <BR> <BR> Private Sub Application_Startup()<BR> Dim objNS As NameSpace<BR> <BR> Set objNS = Application.GetNamespace("MAPI")<BR> Set olInboxItems = objNS.GetDefaultFolder(olFolderInbox).Items<BR> Set objNS = Nothing<BR> <BR> End Sub<BR> <BR> Danke für die Hilfe<BR> <BR> Mark<BR> |
Visual Basic 1.0 für DOS Quelle: http://www.antonis.de/qb2vb/index.htm Spracherweiterungen von VBDOS gegenüber QuickBASIC 4.5 und 7.1/PDS öber die neuen Zusatzfunktionen zur Erstellung grafischer Oberflächen hinaus hat VBDOS auch noch einige zusätzliche Befehle mit auf den Weg bekommen, die von vielen QuickBASIC- Programmierern bis dahin schmerzlich vermisst wurden.: * Felder können per REDIM vergröüert werden, ohne dass sie ihren Inhalt verlieren. * In anwenderdefinierten Felder (TYPE...END TYPE) sind wiederum Felder integrierbar. * Der Metabefehl OPTION EXPLICIT erzwingt Variablendeklarationen mit DIM, wie sie bei PASCAL und C schon immer üblich sind. Alle BASIC-typischen "impliziten" Variablendeklarationen werden dann abgewiesen. Dieses beseitigt eines der wichtigsten Argumente gegen die Programmiersprache BASIC und hilft, Fehler zu vermeiden. * ERROR$ liefert zu einem aufgetretenen Fehler die dazugehörige Fehlermeldung im Klartext. Sie sehen also. Es gibt für QBasic- und QuickBASIC- Programmierer eigentlich keinen Grund, nicht auf VBDOS umzusteigen, selbst wenn sie weiterhin "prozedural" programmieren und die neuen ereignisorientierten Funktionen nicht nutzen wollen. Der Umstieg wird dadurch erleichtert, das VisualBASIC für DOS nahezu 100%-ig abwärtskompatibel zu QBasic und QuickBASIC 4.5/7.1 ist Das Rote ist genau mein Problem! |
du brauchst kein extra visual basic. wir machen ja nur son paar sachen in sldwx merk dir einfach die 5 befehle: dim var as integer, double usw msgbox InputBox do loop debug.print und das wars dich schon dazu noch die beiden befehle für sldwx und fertsch. |
Mit VB 2005 Txt erstellen und in versciedene Zeilen schreib hey, hätte mal ne Frage... ist es Möglich mit Vb2005 einen Belibigen Text in eine Txt Datei schreiben zu lassen? Der Text soll dabei in verschidene Zelle eingetragen werden ( mal Zeile 3 ,mal 5 oder mal auch die 10. Zeile) Gibt es da irgendeinen Befehl das man die Zeile wählen kann die in eine Textdatei geschrieben wird, ich habs bis her so versucht: Dim objStreamWriter As StreamWriter objStreamWriter = New StreamWriter("C:Auswertung_schueler7_Frage7_.txt" ) objStreamWriter.WriteLine("Text ") objStreamWriter.Close() Aber ich kann so nicht die Zeile wählen...auüerdem Soll auf diese Datei mehr mals zugegriffen werden das heiüt im ersten Form wird die Txt erstellt und in Zeile 1 ein Text eingetragen, im nächsten Form soll sie dann wieder geöffnet werden und in Zeile 2 geschrieben werden ich hoffe ihr wisst ne Lösung :P MFG |
Webbrowser Hallo, ich habe eine Frage zu Visual Basic.. :!: Könnte mir vielleicht einer helfen und mir sagen wenn man einen Webbrowser programmiert hat, wie man dass mit den "zu favoriten hinzufügen" programmiert? Ich bräuchte das dringend, wäre echt total lieb! Man muss das doch mit "Dim"Befehl machen, könnte mir jmd den ganzen code hinterlegen? :?: |
Mit dem Befehl "FileCopy": Code: Dim SourceFile, DestinationFile SourceFile = "SRCFILE" ' Define source file name. DestinationFile = "DESTFILE" ' Define target file name. FileCopy SourceFile, DestinationFile ' Copy source to target. Gefunden auf: http://www.quantumjamm.com/code/vb/source/vb/103.htm Gruü Chaq |
VB.Net -> Zugriff auf gemeinsame DB-Verbindung Hi @ all, ich schlage mich atm mit einem Problem rum, dass nervt. Ich habe eine Klasse mit allen DB-Befehlen und so. Ich habe diese im Main-Form geDIMmt. Nur jetzt möchte ich über ein anderes Form auf diese Verbindung zugreifen. Wie geht das? Ich möchte nur GANZ ungern "DIM ... as NEW ... " machen. Schon mal vielen Dank im Vorraus, Gruss Sunman |
bei ASP 1.0 und 2.0 kannst du das dim je nach wunsch wegfallen lassen, es sei denn, du hast in der ersten (code-)zeile den befehl Option Explicit dann wird für jede variable auch eine deklaration verlangt. ob's bei asp.net immer noch so freizügig mit vb zu und her geht, weiss ich nicht. |
VB-Programm: Dim A As Variant Dim N$ A = Shell("c:dirzeig.bat", 1) Open "c:TEST.TXT" For Input As #1 While Not EOF(1) Input #1, N$ Open N$ For Input As #2 While Not EOF(2) Input #2, A$ Wend Close 2 Wend Close 1 Ende Basic-Programm Das DIRZEIG.BAT besteht aus folgender Zeile: dir C:*.* > c: est.txt /b/o Direkter DIR-Befehl im SHELL-Befehl geht nicht (ist kein ausfürhbares Programm). In N$ steht immer der Name. Die Innere Schleife zeigt zB daü immer eine zeile des Files eingelesen wird. Martin |
HI! Die Befehlszeilen Argumente(Die übergebenen Parameter) bekommst du unter VB mit der Command() Funktion zurückgegeben. Du musst sie aber selber parsen. (In stücke zerlegen) Du kannst nur Strings übergeben und zurück bekommen. Wenn du nur ein Argument übergibst ists leicht: dim ppp as string * 10 ppp=command() Lustig wirds dann wenn du von windows (per drag'n'drop) übergebene Dateinamen herausfiltern willst.... Ich hoffe das hilft dir weiter! ------------------ __________________ |SONICÂŤÂŤÂŤÂŤÂŤÂŤ| ÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻ |
Erst an einer Testtabelle und Testseite ausprobieren, dies löscht sofort alle angeklickten IDs. Fett-gedruckte Passagen musst Du mit Deinen Werten anpassen. <%@LANGUAGE="VBSCRIPT"%> <!--#include file=".Connectionpfad.asp" --> <% dim MyID MyID = Request.Form("IDFormularFeld") if MyID ="" then Response.redirect "Uebersicht.asp" set com = Server.CreateObject("ADODB.Command") com.ActiveConnection = MM_connection_STRING com.CommandText = "DELETE FROM [tabelle] WHERE ID in (" & MyID & ") " com.CommandType = 1 com.CommandTimeout = 0 com.Prepared = true com.Execute() Response.redirect "uebersicht.asp" %> Das ganze ist generiert über Datenbankverbindungen, Befehl (gespeicherte Prozeduren) --> Löschen. |
Mehrere Wörter in einem Durchgang replacen asp, vbscript, Access 2002 Tag zusammen, wie kann man mit dem replace-Befehl mehrere replaces gleichzeitig in einem Durchgang machen. Ich möchte gerne Absätze in einem Memofeld der Datenbank durch <br>-Tags ersetzen lassen und gleichzeitg nach ":-) ;-) :-(" suchen und diese durch smiley-Gifs ersetzen lassen. Das ist der Code, den ich für den vbcrlf-Replace nehme: <% dim message message = (rsGetNews.Fields.Item("News").Value) response.write("<div class=""news"">" & replace(message, vbcrlf, "<br>") & "</div>") %> Ich habe es so versucht: <% dim message message = (rsGetNews.Fields.Item("News").Value) response.write("<div class=""news"">" & replace(message, [vbcrlf, ":-)",...], ["<br>", "<img src=""smile.gif"">",...]) & "</div>") %> Danke, -nin |
Hallo! Ich nutze ASP-VBScript und IIS5 W2K-Server und habe bei mir auch das Problem mit dem Quellcode von Gudula gelöst, SUPER DANKE!! Nun habe ich versucht das auch beim schreiben in eine Datenbank hinzubekommen. (Also mit "Insert Into") Sieht dann ungefähr so aus: <%dim strEingabe strEingabe = server.urlencode(Request.Form("Feld"))%> Mit dem Befehl "server.urlencode" wird in meine Datenbank (Access) alles ab den Anführungszeichen mit einem "+" ersetzt?? Weiss hier vielleicht auch jemand Rat? Danke, Andre |
hi, du erzeugst ein file zu speichern der hits. zb speicher.asp: <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <!--#include file="../Connections/dein.asp" --> <% dim rs, suchstring suchstring=request.querystring("suchstring") set rs = server.createobject("ADODB.recordset") rs.activeconnection = MM_dein_STRING rs.source = "select * from tbl_deinevotetabelle where datenfeld_vote="&suchstring rs.CursorType = 0 rs.CursorLocation = 2 rs.LockType = 2 rs.Open() rs("datenfeld_vote")=rs("datenfeld_vote")+1 rs.update rs.close() set rs = nothing response.redirect(request.ServerVariables("HTTP_REFERER")) %> als link kannst du jetzt von jeder anderen seite einfach folgendes angeben <a href="speicher.asp?suchstring=namedessuchkriteriums">mein vote</a> du must natürlich noch die speicher.asp an deine db anpassen dürfte aber keinen ärger machen. um die zahl des votings in % darzustellen & umzurechnen kannst du einfach wieder auf sql zurückgreifen der befehl sum hilft dir da deutlich weiter. mit sum kannst du alle votings zusammenzählen zb. select sum(dein_voting) as summevotings from tbl_deinevotetabelle jetzt ist alles ganz einfach <% response.write((rs(summevotings)/100)* rs("datenfeld_vote")) %> so muss das ganze funzen. hab es aber noch nicht probiert. also ohne garantie. sowas hab ich noch nie gemacht.....muü mal so ein voting coden...! [Edited by Kapetanov on 10-24-2002 at 08:14 AM GMT] |
vbscript fehlermeldung im browser bei folgendem code erscheint eine fehlermeldung. der code ist aus einem buch, da steht er so im buch ganz genau drin. ich habe ihn übernommen, nur die variablen angepasst. 'Variablen deklarieren dim strDB dim objcon, objRS, strCon 'neue variblen dim strSQL, dblVKPreis, strthbcolor, strtdbcolor strthbcolor = "ffff00" 'Hintergrundfarbe Tabellenkopf strtdbcolor = "f7efde" 'Hintergrund Tabellendaten 'Pfad und Dateiname der Datenbank strDB = "Data Source=" & _ Server.MapPath("/acro.mdb") 'Objekt für den Verbindungsaufbau mit der Datenbank set objcon = Server.CreateObject("ADODB.Connection") 'Parameter zum Öffnen der Datenbank strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & strDB objCon.Open strCon 'Objekt für das Recordset öffnen set objRS = Server.CreateObject("ADODB.Recordset") '---SQL-Befehl in einer Zeile--- strSQL = "Select * From Partner Where Kundstat = form1 order by Vorn;" objRS.open strSQL, objCon %> folgende fehlermeldung tritt auf: Kompilierungsfehler in Microsoft VBScript-Fehler '800a0401' Anweisungsende erwartet /untitled.asp, Zeile 54 strSQL = "Select * From Partner Where Kundstat = form1 order by Vorn;" objRS.open strSQL, objCon ---------------------------------------------------------------------------------------------------^ weiss grad echt nicht mehr weiter, wär für hilfe dankbar! |
den Left Befehl muü man nur unter QB benutzen, da unter DOS noch das Format 8.3 besteht. Unter VB sollte man den ganzen Namen benutzen und nich nur die ersten 8 Zeichen, damit keine verwechslungen vorkommen, also so: Code: Dim Name As String Dim Filename As String Name = "Name der Person" Filename = Name & ".txt" Open Filename for output as #1 Print #1, "Name" Print #1, "Adresse etc.." Close #1 |
das ist der code aus nem vbscript: [code:1:3c0fce502b]Private Function ReadFile(MyFile) 'Returns all data of a file Dim FileIn, f_fso, tmp_return Set f_fso = WScript.CreateObject("Scripting.FileSystemObject") 'Prevent "File-Not-Found" exception If f_fso.FileExists(MyFile) then 'File exists 'Open file Set FileIn = f_fso.OpenTextFile(MyFile , 1, false) 'Get the data tmp_return = FileIn.ReadAll 'Close connection FileIn.Close Set FileIn = nothing Else 'File does not exist tmp_return = "" End if 'Clean up Set f_fso = nothing 'Return Data ReadFile = tmp_return End Function[/code:1:3c0fce502b] müsstest du halt auf VB anpassen. Jetzt kannste mit InStr oder StrPos (VB Zeiten sind lang vorbei - aber die Befehle könnten es sein ...) feststellen ob ein bestimmter Wert in der Datei vorkommt |
Excel schliessen Datei xy.xls öffnen Dim objExcelApp Set objExcelApp = CreateObject("excel.Application") objExcelApp.Visible = 0 'Excel sichtbar oder nicht sichtbar objExcelApp.Workbooks.Open "c:xy.xls" ' Datei xy.xls schlieüen objExcelApp.Workbooks.Close 'Exceldatei schlissen objExcelApp.Quit 'Excel schlissen Set objExcelApp = Nothing 'Variable freigeben Es gibt einen recht hilfreichen Trick: Man zeichnet sich in Excel eine Makro auf kann dann die Befehle in WinCC VBS nutzen. Gruss |
DataAdapter.Update funktioniert nicht Hallo, in Visual Studio habe ich ein DataSet erzeugt und es mit meiner Datenquelle verbunden. Es funktionert alles: Anzeige der Daten in den TextBoxen des Formulars, Datennavigation usw. Mit dem DataAdapter.Update sollen ćnderungen des DataSets in meiner Datenquelle übernommen werden. Dies funktioniert aber nur, wenn ich Datensätze lösche oder verändere. Sobald ich einen Datensatz hinzufüge, bekomme ich beim Update folgende Fehlermeldung: Zeichenfolgen- oder Binärdaten werden abgeschnitten. Die Anweisung wurde beendet. Woran kann das liegen? Könnte es womöglich etwas damit zu tun haben, dass ich den CommandBuilder zur Generierung der Befehle verwendet habe? Wenn ja, wie kann man die Commands manuell programmieren? Gruü, Stefan _________________________________________ ' --- Dataset erzeugen _ds = New DataSet() ' --- SQL-Abfrage _SQL = "SELECT ... FROM ... WHERE ..." ' --- ConnectionString festlegen _conn = New SqlConnection("Data Source = ...) ' --- DataAdapter _da = New SqlDataAdapter(_SQL, _conn) _cmd = New SqlCommand(_SQL) _cmd.Connection = _conn ' --- Tabelle lesen _da.FillSchema(_ds, SchemaType.Source) _da.Fill(_ds, "StmSachNr") _____________________________________________ ' --- CommandBuilder Dim CommandBuilder As SqlCommandBuilder = New SqlCommandBuilder(_da) CommandBuilder.GetInsertCommand() CommandBuilder.GetDeleteCommand() CommandBuilder.GetUpdateCommand() ______________________________________________ Private Sub frmStmSachNr_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed Me.Validate() Me.CurrencyManager.EndCurrentEdit() Me._da.Update(_ds, "StmSachNr") End Sub |
Ok, die SQL - Datenbank, den DataAdapter (Tb_OrganisationTableAdapter) und das Dataset (DsOrganisation) habe ich mithilfe der Assistenten von Visual Studio 2005 erstellt. Beim Start der Anwendung wird nun dieses Dataset in einen TableAdapter geladen und dann in einem dgv angezeigt (siehe Code). In der Sub getData() greife ich auf die Netzwerkdatenbank zu und hole mir die benötigten Daten. Ich lade und zeige sie an. Anschlieüend füge ich in der Sub updateLocalDB() dem Dataset DsOrganisation eine neue Zeile mit Daten hinzu. Diese wird mir im dgv angezeigt. Nur speichern in der Datenbank kann ich sie nicht. Code: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'lädt Daten in die Tabelle "DsOrganisation.tb_Organisation" Me.Tb_OrganisationTableAdapter.Fill(Me.DsOrganisation.tb_Organisation) getData() updateLocalDB() End Sub Ich habe schon verschiedenes ohne Erfolg ausprobiert, z.B.: Code: Sub updateLocalDB() Dim newRow As DataRow newRow = DsOrganisation.tb_Organisation.NewRow() newRow("OrganisationID") = ds.Tables(0).Rows(0).Item(0).ToString newRow("OrganisationName") = ds.Tables(0).Rows(0).Item(1).ToString newRow("KundenNr") = ds.Tables(0).Rows(0).Item(2).ToString DsOrganisation.tb_Organisation.Rows.Add(newRow) DsOrganisation.AcceptChanges() Try 'Me.Validate() 'Me.Tb_OrganisationBindingSource.EndEdit() Tb_OrganisationTableAdapter.Update(DsOrganisation.tb_Organisation) MsgBox("Update successful") Catch ex As Exception MsgBox("Update failed") End Try End Sub oder muss ich von Hand eine Verbindung aufbauen einen Insert into - SQL Befehle erstellen? |
Kontrollmodul von VBA nach VB.NET nicht umsetzbar Hallo<P> ich habe ein Modul in Excel, mit dem ich mitschreibe, wer in den letzten 7 Tagen<BR> die Datei benutzt hat. Dies funktioniert sehr gut und sieht so aus:<PRE> 'Ermitteln des Windows-Anmelde-Namens Private Declare Function GetUserName Lib "advapi32.dll" Alias _ "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) _ As Long </PRE> <PRE> Function UserName() Dim sName As String Dim nSize As Long Dim lngResult As Long nSize = 100 sName = Space$(100) lngResult = GetUserName(sName, nSize) If lngResult <> 0 Then UserName = Left$(sName, nSize - 1) End If End Function </PRE> <PRE> Sub Zugriff() 'Zugriffsprotokoll Dim tarWKs As Worksheet Dim lastR As Integer, i As Integer Set tarWKs = Worksheets("Protokoll") Debug.Print tarWKs.Name lastR = tarWKs.Cells(65536, 2).End(xlUp).Row + 1 Debug.Print lastR tarWKs.Unprotect Password:="Test" 'Alte Daten löschen With tarWKs For i = lastR To 2 Step -1 Debug.Print .Cells(i, 2) If Format(.Cells(i, 2), "dd.mm.yyyy") < Format(Now - 7, "dd.mm.yyyy") Then .Rows(i).Delete Shift:=xlUp End If Next i End With lastR = tarWKs.Cells(65536, 2).End(xlUp).Row + 1 tarWKs.Cells(lastR, 2).Value = Now tarWKs.Cells(lastR, 3).Value = Usermodul.UserName 'Windows-Anmeldung tarWKs.Protect Password:="Test" End Sub</PRE><BR>Nun möchte ich aber Excel in Zukunft nur noch für die Darstellungsdatei insgesamt nutzen und alles mit VB.NET steuern.<BR> Irgend wie hat er hier beim Umsetzen aber ein Problem schon mit dem Debug-Befehl. Was muss ich anders machen,<BR> wenn ich das weiter in Excel nutzen aber mit VB.NET steuern will oder kann man das umwandeln, dass die Daten<BR> in eine Textdatei geschrieben werden? Würde mich freuen, wenn mir jemand einen Tip geben könnten. Gruü Angie |
Hallo Albert, ob der DATE_SUB-Befehl richtig verwendet wird, habe ich nicht geprüft. Das steht in der MySql-Dokumentation. Dein Fehler ist das grundlegend falsche Vorgehen mit DbDataAdapter.Update sowie einzelnen Befehlen für jede Zeile. Mir wird immer schlecht, wenn ich so etwas lese: Code: For Each row In dt.Rows Dim command As New MySqlCommand("DELETE FROM treffer WHERE DATE_SUB(nDatum, INTERVAL 1 MONTH)< Datum", myconn) Next Für jede Zeile deklarierst Du die Variable command, erzeugst mit new eine neue Instanz - und beim Next ist diese Instanz wieder vergessen. Nirgends gibt es eine Anweisung, dass dieser command benutzt werden soll - erst recht nicht in Verbindung mit der Datenbank. Nirgends gibt es eine Anweisung, die etwas mit dem CommandBuilder macht. DbDataAdapter.Update benötigt einen eigenen DeleteCommand, der sich auf die DataTable bezieht und DataRow.State benutzt. Wenn der SelectCommand passt (insbesondere darf er sich nur auf eine Tabelle beziehen und muss einen PrimaryKey enthalten; beides scheint zu stimmen), erzeugt der DbDataAdapter selbst einen DeleteCommand und kann alle Zeilen, die mit DataRowState.Deleted markiert sind, automatisch löschen. Aber Du hast keine einzige DataRow zum Löschen vorgesehen. (Jedenfalls sehe ich im Code nichts davon.) Du hast mindestens drei Möglichkeiten: Entweder Du bearbeitest in einer Schleife jede DataRow und prüfst per Code, ob row.Delete() auszuführen ist oder nicht; dann kann anschlieüend DbDataAdapter.Update verwendet werden. Oder Du benutzt einen DELETE-Befehl bezogen auf den PK (PrimaryKey), dazu eine Schleife für jede DataRow und prüfst per Code, ob sie zu löschen ist; wenn ja, dann übergibst Du den PK an den DELETE-Befehl und führst ihn per ExecuteNonQuery aus (ohne DbDataAdapter). Benutze dafür unbedingt Parameters und keine String-Verknüpfung mit PK.ToString(). Oder Du erzeugst einen DELETE-Befehl wie den von Dir vorgesehenen. Dieser wird einmalig per command.ExecuteNonQuery() ausgeführt - fertig. Dieses Vorgehen ist am besten, weil etwas, was nur in der DB erledigt werden soll, auch dort ausgeführt werden soll. Es handelt sich um einen Sql-Befehl und nicht um einen je Zeile. öbrigens gehören DB-Fragen besser ins Unterforum ADO.NET. Zur Einführung schlage ich die VB-OpenBooks vor. (Ich hätte noch mehrere grundsätzliche Kritikpunkte, aber die spare ich mir jetzt.) Jürgen |
Das Programm ist in Visual Basic Script geschrieben. Leider bin ich auch da totaler Neuanfänger. Ist es dort irgendwie möglich Spalte für Spalte zu vergleichen ob eine Veränderung vorliegt und dann die Veränderung in eine 3. Tabelle zu schreiben ? Es soll eben nur die Veränderung angezeigt werden in der 3. Tabelle und nicht die unveränderten Werte. Werte die bereits in der 3. Tabelle drin stehen und erneuert wurden sollen geupdatet werden also nicht immer nur mit INSERT neue Werte eintragen Ich komm leider nicht drauf wie ich das anpacken könnte Edit: Ich habe etwas rumprobiert und bin momentan zu dem Ergebnis gekommen, dass mir der 1. Datensatz in der 1. Spalte verglichen wird. Aber nur dann, wenn er auch in der anderen Tabelle gefunden wird. Wo ich noch dringend Hilfe brauche ist, wenn der Datensatz nicht vorhanden ist, oder er nicht an 1. Stelle steht einer Spalte steht ? Das habe ich noch nicht rausgefunden. Do Until ADORec1.EOF Dim flag : flag = False Do Until ADORec2.EOF If ADORec1("name").Value = ADORec2("name").Value Then If ADORec1("adresse").Value <> ADORec2("adresse").Value Then adresse=ADORec2("adresse").Value flag = True Else flag = False adresse = "" End If If CDbl(ADORec1("plz").Value) <> CDbl(ADORec2("plz").Value) Then plz=ADORec2("plz").Value flag = True Else flag = False plz = " " End If Exit Do Else End If ADORec2.MoveNext Loop If flag Then ' SQL INSERT BEFEHL SQL3="INSERT INTO TESTTABLE3" & _ "("& _ "adresse" &_ ",plz" & _ ")" & _ "VALUES " & _ "('"& adresse & "'," & plz & ")" ADORec3.Open SQL3, cnnConnect flag = False End If ADORec1.MoveNext Loop |
<% LANGUAGE=VBScript %> <HTML><HEAD> <TITLE>Datenbank - Gehalt</TITLE></HEAD> <BODY> <h1>Gehaltdatenbank öbung nr.1 ;-)</h1> <hr> <% Dim strCon, strDB, strTabelle Dim objCon, objRS strDB= "Data Source=" &_ Server.MapPath("/it-applications/datenbank/gehalt.mdb") strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & strDB strTabelle = "Mitarbeiter" Set objCon = Server.CreateObject("ADODB.Connection") objCon.Open strCon Set objRS = Server.CreateObject("ADODB.Recordset") objRS.open strTabelle, objCon objRS.MoveFirst While Not objRS.EOF %> <a href="test02.asp?vorname=<%=objRS("vorname")%>"> <% %> <% Response.write objRS("name") & ", " Response.write objRS("vorname") & ", " Response.write "<br><hr>" objRS.MoveNext Wend objRS.close Set objRS = Nothing objCon.close Set objCon = Nothing %> </a> <font style="color:#101080;font-size:18px;font-family:Courier,New Courier,arial;"><input type="hidden" name="id1" value="32423"></font REMOTE_ADDR = ><%= Request.ServerVariables.Item("REMOTE_ADDR")%> </BODY> </HTML> </BODY> </HTML> Das ist der Code. er verweist somit mit jedem Namen, Vornamen auf die Seite Test 02.asp das ist auch richtig. Nur soll er auf der SEite test 02 nur informationen zum dazugehörigen namen anzeigen. ich muss sozusagen befehle übergebe. Das ist mein Problem das ich nicht weis wie ich die entsprechenden Befele übergebe bzw. auf der Test02.asp auslesen kann. Vielen Dank schon mal KornJulio |
hmm also unter win9x systemen kanns sein das der treiber für den pc-piepser deaktiviert oder gar nicht erst installiert wurde... änder das hier, dann sollte da wieder gehen. XP und win2k brauchen das aber nicht!!! Code: in SYSTEM.INI: Abschnitt [Drivers] Wave=speaker.drv Abschnitt [Speaker.drv] Volume=500, andere Einträge werden autom. hinzu gefügt. in WIN.INI ...oder ? speaker.drv=Sound Driver for PC-Speaker und hier nen VBScript.. mit wsh und js kommt man leider nicht an den speaker ran... Funzt unter Windows NT/Me/2000. Läuft über die API-Funktion Beep. Damit lässt sich leicht der PLAY-Befehl von QuickBasic nachbauen. Code: Private Declare Sub Beep Lib "kernel32" ( _ Optional ByVal dwFreq As Long = 440, _ Optional ByVal dwDuration As Long = 240 _ ) Private Sub Form_Click() ' "Alle meine Entchen" abspielen. Call Play("abcde e ffffe ffffe ddddc c bbbba") End Sub Private Sub Play(ByRef s As String) Dim i As Integer Dim t As String For i = 1 To Len(s) t = Mid$(s, i, 1) ' Leider geht das nicht über eine lineare Skalierung. Die Liste kann beliebig erweitert ' werden. Da ich aber kein Musik-Profi bin, kenne ich mich nicht aus. Select Case t Case "a": Call Beep(444) Case "b": Call Beep(488) Case "c": Call Beep(550) Case "d": Call Beep(580) Case "e": Call Beep(640) Case "f": Call Beep(720) Case "g": Call Beep(810) Case "h": Call Beep(860) Case "i": Call Beep(920) Case " ": Call Beep(32767) End Select Next i End Sub |
Auf die Gefahr hin, dass ich deine Frage falsch verstehe: Du willst den Skriptteil von nur der 10. öbung erklärt haben? Dann frage ich mich, wieso auch die 11. öbung angehängt ist :) Code: Sub Waehrungsumrechnung ( ) Initialisiert eine Prozedur. Code: Dim dollarbetrag As Single, eurobetrag As Single Deklariert die Variablen dollarbetrag und eurobetrag als Zahlen vom Datentyp single. Code: Dim titel As String Deklariert die Variable titel als String. Code: Const WECHSELKURS As Single = 1.2154 Definiert eine Konstante WECHSELKURS mit dem Zahlenwert 1.2154 vom Datentyp single. Code: titel = “Umrechnung von Euro in Dollar“ Weist der Variablen titel den Wert "Umrechnung von Euro in Dollar" zu. Code: ’Eingabe des Eurobetrages Nur ein Kommentar. Code: eurobetrag = InputBox(“Bitte Betrag in Euro eingeben: “, titel) Weist der Variablen eurobetrag das Ergebnis einer Eingabeaufforderung mit dem Titel titel und dem Beschreibungstext "Bitte Betrag in Euro eingeben:" zu. Code: dollarbetrag = eurobetrag * WECHSELKURS Weist dollarbetrag das Produkt von der Variablen eurobetrag und der Konstanten WECHSELKURS zu. Code: ’Ausgabe des Dollarbetrages Nur ein Kommentar. Code: MsgBox eurobetrag & “ EUR entsprechen “ & dollarbetrag & “ $“ Gibt eine MessageBox aus, deren Beschreibung aus den Strings eurobetrag, " EUR entsprechen ", dollarbetrag und " $" zusammengefügt wird. Code: End Sub Ende der Prozedur. Ich habe kaum Erfahrung mit Visual Basic, daher sind das nur (meiner Meinung nach korrekte) Annahmen über die einzelnen Befehle des Programms. |
moin, ADO heisst dein Freund. Das musst du über Projekt > Verweise hinzufügen. "Microsoft ActiveX Data Objects <versionsnummer> Libary" wenn du es ganz ohne Fremdkomponenten machen willst, musst du im Web nach einem ADO Treiber suchen den du im kompletten Source implementieren kannst. Wenn du ADO benutzt musst, du das ungefähr so aufbauen: Code: Option Explicit Dim adoConnection As ADODB.Connection Dim adoRecordset As ADODB.Recordset Dim adoCommand As ADODB.Command Private Sub Form_Load() Set adoConnection = New ADODB.Connection With adoConnection .CursorLocation = adUseClient .Mode = adModeShareDenyNone ' Jet-Provider .Provider = "Microsoft.Jet.OLEDB.4.0" ' Pfad zur eigendlichen DB .Properties("Data Source") = App.Path & "db1.mdb" ' Datenbankpasswort .Properties("Jet OLEDB:Database Password") = "test" ' Pfad zur System- und Securety-MDW .Properties("Jet OLEDB:System database") = App.Path & "Secure.mdw" ' UserId für anzumeldenden User .Properties("User ID") = "testuser" ' Passwort des Users .Properties("Password") = "testpwd" .Open End With Set adoRecordset = New ADODB.Recordset With adoRecordset .ActiveConnection = adoConnection .CursorLocation = adUseClient .CursorType = adOpenKeyset .LockType = adLockOptimistic .Source = "SELECT * FROM tbl_Test1" .Open End With Do While Not adoRecordset.EOF ' hier kann immer der Spalten name als Index benutzt werden. MsgBox adoRecordset.Fields("ID").Value adoRecordset.MoveNext Loop adoRecordset.Close End Sub ich hoffe das hilft dir weiter P.S.: das Sample ist gleich mit einer PW Geschützten DB gemacht. das Command object benötigst du Um SQL Insert und Update Befehle abzusetzen P.P.S.: für welchen Bereich willst du das Buch? VB Allgemein? VB und ADO? VB und API? |
"Juergen" schrieb: [...] copy ordner1(randomize).bmp windowsoot.bmp Leider kann ich nicht programmieren, ich kenne nur ein paar batch-Befehle aus DOS-Zeiten. Kann man damit das gewünschte Kopieren hin bekommen? Oder mit einer anderen interpretierenden Sprache? vb-Script wäre z.B. dazu geeignet. Random-funktion: http://msdn.microsoft.com/library/en...smthrandom.asp Einfache Dateioperationen (achtung, Zeilenumbruch): http://msdn.microsoft.com/library/en- us/script56/html/sgworkingwithfiles.asp Hier ein Beispiel (dateiname.vbs), wie es aussehen könnte (ohne Gewähr): --- Dim oFS 'FileSystemObject Dim oOrdner 'Scripting.Folder Dim oDateien 'Scripting.Files Dim oDatei 'Scripting.File Dim iZufall 'Integer Dim iZaehler 'Integer Set oFS = CreateObject("Scripting.FileSystemObject") Set oOrdner = oFS.GetFolder(quellverzeichnis) Set oDateien = oOrdner.files iZufall = oDateien.Count * Rnd + 1 For Each oDatei In oDateien iZaehler = iZaehler + 1 If iZaehler = iZufall Then Exit For End If Next oDatei.Copy zielverzeichnis+dateiname, True Set oFiles = Nothing Set oFolder = Nothing Set oFS = Nothing --- quellverzeichnis und zielverzeichnis müssten noch mit "Leben" gefüllt werden oder das Skript muss die Argumente abfragen, mit denen es aufgerufen wird. Sehr unschön an dem Coding ist die "For Each" Schleife, die mit "Exit For" verlassen wird. Jedoch konnte ich auf die Schnelle das Files-Objekt nicht dazu überreden, beim "Item" als Argument eine Zahl zu aktzepieren anstatt einen Dateinamen zu erwarten. :-( Falls jemand noch mehr schreiben möchte: Wie kann man statt des Zufalls-bitmaps ein bitmap nach dem anderen der Reihe nach kopieren? (Das heiüt, bei jedem boot nur EIN copy.) Dazu muss die For-Schleife verändert und vorher der Dateiname der evtl. existierenden Datei ermittelt werden. Die Datei, welche in der Schleife nach der existierenden Datei kommt, ist dann die "nächste". Für die Fälle: - die letzte Datei in der Schleife ist im Zielverzeichnis (da gibt es in der Schleife keine "nächste" Datei) - die Datei im Zielverzeichnis existiert im Quellverzeichnis nicht (könnte ja gelöscht worden sein) - keine Datei im Zielverzeichnis vorhanden (Erster Aufruf oder Zielverzeichnis gelöscht) muss dann auch noch etwas programmiert werden. Grüüe Christoph |
Dateinamen umbennen automatisieren "Christoph Kührer" schrieb Ich bin auf der Suche nach einer Möglichkeit, wie ich in Dateinamen nach einem bestimmten Buchstaben suchen und diesen gegen einen anderen tauschen kann. das ganze soll auf einem W2003 Server laufen. Hi Christoph, ein Visual-Basic Script könnte das erledigen. Wie einfach oder schwierig das ist, hängt von der Art der Dateinamen ab. Wenn zum Beispiel nur der vordere Teil des Namens von insgesamt 555 Dateien geändert werden soll, macht dies das folgende Script: ----------------------------------------------------------------------------------------------------------------------------- ' Rename.vbs - Dateien umbenennen mit VBScript (Windows Scripting Host) ' Das Script muü in dem Verzeichnis ausgeführt werden, in dem sich die ' Datei befindet bzw. die Dateien befinden. ' Es können auch Pfadangaben bei "Oldname/Newname" verwendet werden, ' um Dateien zu verschieben statt umzubenennen. ' Web-Ressource: ' http://msdn.microsoft.com/library/en...asp?frame=true ' Variable definieren: Dim FileSysObject ' Verbindung zum Dateisystem-Objekt: Set FileSysObject = CreateObject("Scripting.FileSystemObject") ' Counter ist Teil des Dateinamens: For Counter = 1 to 555 ' Bisheriger Dateiname (Bsp.: Name3.bmp): Oldname = "Name" & Ltrim(Cstr(Counter)) & ".bmp" ' Neuer Dateiname (Bsp.: Datei3.bmp): NewName = "Datei" & Ltrim(Cstr(Counter)) & ".bmp" ' Operation "Datei suchen und umbenennen": FileSysObject.MoveFile OldName, NewName ' Meldung ausgeben: MsgBox("Datei " & OldName & " wurde umbenannt in " & NewName) Next ----------------------------------------------------------------------------------------------------------------------------- Schau Dich am Besten mal unter obigem Link auf der Webseite bei den Code-Samples um, ob Du etwas geeignetes findest, das Du nur leicht abändern brauchtest.. Auch eine Lösung über Kommandozeilen-Scripte (Batches) ist denkbar mit den Befehlen "If", "For", usw. könnte man das sicher auch erreichen. Suche dazu eventuell mal per Google... -- Viele Grüüe Robert Pieroth http://www.faq-o-matic.net https://mvp.support.microsoft.com/pr...1-A0A5B32BFF0A |
geplante Task im Hintergrund ausführen ich suche eine Möglichkeit, dass eine, durch den Taskplaner gestartete Batchdatei nicht den Fokus klaut, sondern unauffällig im Hintergrund läuft. Erstelle eine Verknüpfung zu der Batchdatei, wähle bei den Eigenschaften dieser Verknüpfung unter "Verknüpfung" - "Ausführen" die Option "Minimiert" und benutze im Scheduler diese Verknüpfung zum Aufruf. Dann müüte der Batch nur in der Taskleiste zu sehen sein und das aktuelle Fenster den Focus behalten. Auf die Idee bin ich gestern auch gekommen, aber das funktioniert nicht. Der XP-Taskplaner scheint sich nicht um die Verknüpfung zu kümmern, sondern liest direkt bei der Einrichtung das Verknüpfungsziel aus. Als ich nach dem erfolglosen Versuch die Verknüpfung gelöscht hatte, lief die geplante Task, die sich auf die Verknüpfung bezog, trotzdem noch. Um den Batch vollkommen unsichtbar auszuführen, kann ein kleines VB-Skript benutzt werden: Dim Shell: Set Shell = WScript.CreateObject ("WSCript.shell") shell.run "stapel.bat",0,1 Ich habe damit keine Erfahrung. Gehört diese Befehlszeile in eine Datei, die dann die Endung SCR haben muss? Das solltest Du aber nur benutzen, wenn Du Dir ganz sicher bist, daü der Batch fehlerfrei läuft. Die Batchdatei kopiert lediglich eine paar Dateien, und ist seit Monaten getestet. Danke für den Tipp. Das werde ich heute abend mal ausprobieren. Mein nächster Versuch wäre ein kleines C-Programm gewesen, wobei ich mir dabei schon einen abgebrochen hätte, denn damit habe ich so gut wie gar keine Erfahrung. Ich werd berichten, ob es funktioniert. Mark |
@elvin 1.Was für ein builder? Versuchs mal mit der MSDN Library, dann weiüt du auch was es mit den Bibliotheken auf sich hat. 2.Die Sprache hinter dem link von X-Dragon ist VB. 3.Was programmierst du denn, das du mit c++ loslegst. das ist ja wie das licht mit nem Amboü statt nem hammer auszumachen :-) 4.Ein Beispiel was ich vor 1 1/2 Jahren geschrieben habe - allerdings in VB - macht genau das was du willst. Es liest daten von Excel und schreibt sie in einen SQL Server. Mit Access kannst du die gleichen Befehle benutzen.!! Das ist allerdings nur eine kurzform - vielleicht kannst du damit was anfangen. ist aber unter meinem copyright (kleiner scherz) '18-05-2001 'by P.H. ' Option Explicit Dim cn As ADODB.Connection Private Sub cmdEnd_Click() End End Sub Private Sub cmdStart_Click() UpdateTable End Sub Function UpdateTable() Dim i As Integer Dim strA As String Dim strB As String Set cn = New ADODB.Connection cn.Open ("Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User ID=sa;Initial Catalog=StatementTEST;Data Source=nshhvrsrv053;Network Library=dbmssocn") Worksheets("sheet1").Activate Do While Not ActiveCell.Value = "" i = i + 1 Range("a" & i).Select Range("a" & i).Activate strA = ActiveCell.Value Range("b" & i).Select Range("b" & i).Activate strB = ActiveCell.Value If ActiveCell.Value = "" Then Exit Do cn.Execute ("INSERT INTO dictionary(english,german)VALUES ('" & strA & "','" & strB & "')") '(Bulk insert) If cn.Errors.count <> 0 Then labStatus.Caption = "Fehler bei öbertragung " & i Exit Function End If Loop cn.Close labStatus.Caption = i - 1 & "Reihen erfolgreich übertragen" End Function Gruü :D :D |
Winsocket Befehls-Buffer Hi Leute, ich hab da ein kleines Problem: Ich versuche, über Winsock alle ankommenden Daten zu "Buffern" bis ein bestimmtes Zeichen gesendet wird. Beispiel ankommender String: Befehl1|Argument1|Argument2|....|Argument10 CHAR(10) (anzahl der Argumente variiert) CHAR(10) schliesst eine Befehlssequenz ab. Der ankommende String soll solange gebuffert werden, bis ein Befehl samt Argumenten mit CHAR(10) abgeschlossen wird. Dann soll der Befehl aus dem Buffer entfernt werden und an eine funktion NeuerBefehl (data:string); übergeben werden. Bei meinem Code friert das Programm ein, sobald Daten ankommen. Codeausschnitt [delphi:1:ce2a3ce618] procedure TForm1.tcpRead(Sender: TObject; Socket: TCustomWinSocket); var t, wort:string; temp, position:integer; begin t:=tcp.Socket.ReceiveText(); ReceiveBuffer := ReceiveBuffer + t; position := pos(#10, ReceiveBuffer); while ( position <> 0 ) do begin temp := pos(ReceiveBuffer, Chr(10))+1; If temp > 1 Then begin NeuerBefehl (leftstr(ReceiveBuffer, temp+1)); end; ReceiveBuffer := MidStr(ReceiveBuffer, 1, temp); end; [/delphi:1:ce2a3ce618] Selbiges prinzip unter VisualBasic funktioniert. Hier der Codeausschnitt aus dem VisualBasic Programm: Code: Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim t As String Winsock1.GetData t ReceiveBuffer = ReceiveBuffer + t Dim temp As Long Do While InStr(1, ReceiveBuffer, Chr(10)) > 0 temp = InStr(1, ReceiveBuffer, Chr(10)) If temp > 1 Then NeuerBefehl Left(ReceiveBuffer, temp - 1) Else NeuerBefehl "" End If ReceiveBuffer = Mid(ReceiveBuffer, temp + 2) Loop End Sub Kann mir wer helfen und den VB Code in Delphi nachbauen? Danke schonmal im Vorraus. GreeZzZz ChriZzZz |
String Problem - wer kann helfen? hi, folgendes Problem tritt auf: images auf meiner homepage werden ab einer bestimmten breitenüberschreitung automatisch verkleinert durch ein if then befehl. das ganze paqssiert folgendermassen: HTML-Code: <% Dim imgWidth, imgHeight, imgPercent, imgFixWidth, imgFixHeight imgWidth = rsDetail.Fields.Item("PIC_WIDTH").Value imgHeight = rsDetail.Fields.Item("PIC_HEIGHT").Value If imgWidth > 600 Then (line 116) imgFixWidth = 600 imgPercent = (imgFixWidth/imgWidth) imgFixHeight= (imgHeight*imgPercent) Else imgFixWidth = imgWidth imgFixHeight = imgHeight End If %> wobei PIC_WIDTH und PIC_HEIGHT werte aus der datenbank sind. wenn ich das ganz so lasse, dann bekomme ich bei images die breiter als 600 pixel sind folgende fehlermeldung: Microsoft VBScript runtime error '800a000d' Type mismatch: '[string: ""]' /ak/adressen/inc_detail.asp, line 116 line 116 ist die zeile wie oben im code angegeben (in klammern line 116). was mache ich hier falsch? wenn ich anführungsstriche vor/hinter die zahl 600 setze, dann bekomme ich zwar keine fehlermeldung mehr - aber der befhel wird auch nicht ausgeführt und je nach browser a) firefox: erscheint das bild in originalgrösse oder b) IE erscheint das bild gar nicht. ein beispiel kann hier gefunden werden: bild grösser als 600 pixel: http://machmehrdraus.brinkster.net/a...2539&iPic=2622 bild kleiner als 600 pixel: http://machmehrdraus.brinkster.net/a...D=942&iPic=994 für hilfe wäre ich echt dankbar, gruss, markus |
Problem mir Hallo zusammen! Ich beschäftige mich nun seit knapp zwei Tagen mit VB und komm nun nicht weiter. Ich hab zwar gesucht und auch Lösungsvorschläge gefunden, doch leider bin ich noch nicht so weit, diese in das folgende Prog einzuarbeiten (Soll übrigends ein Hacktest sein). Und zwar möchte ich, wenn das richtige Lösungswort eingegeben und bestätigt wurde keine Message Box sonder "Form3" (evtl. als neuse Fenster) einbinden. Mir fehlen jedoch die Befehle und das Know How. Wäre nett, wenn mir da jemand weiterhelfen könnte. Die Stellen, an denen ich was vermute was zu ändern ist hab ich markiert. Danke schonmal! g-tah Option Explicit Dim Wort As String Dim Right As String Dim sol As String Dim g As String Dim a As String Dim b As String Dim c As String Dim d As String Dim e As String Dim f As String Dim y As String Dim x As String Dim z As String Private Sub Command1_Click() End End Sub Private Sub Form_Load() Right = "Das Lösungswort ist " X + X + X f = "X" e = "X" d = "x" c = "X" b = "X" g = "" sol = f + g + d + g + b + g + e + g + c Text1.Text = "" End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Wort = Text1.Text If Wort = sol Then MsgBox (Right), , "Lösungswort" 'Hier soll Form3 rein anstatt der Box. End Else If Wort = "XXXX" Then Text1.Text = "" Text1.SetFocus MsgBox ("XXXX"), vbCritical, "Error 314" Else If Wort = "XXXX" Then Text1.Text = "" Text1.SetFocus MsgBox ("XXXX"), vbCritical, "Error 314" Else Text1.Text = "" Text1.SetFocus MsgBox ("XXXX"), vbQuestion, "XXXXX" End If End If End If End If End Sub |
Pfadauswahl Hallo, in der VB-Hilfe ist folgendes Bespiel, wie man eine Datei auswählen kann und in ein Feld schreiben kann. Ich möchte das ganze aber nutzen um nicht eine Datei sondern nur einen Ordner auszuwählen. Sicherlich ist das doch nur ein kleinwenig anderer Befehl??? Wer kann helfen? Private Sub cdmPfad_Click() 'Declare a variable as a FileDialog object. Dim fd As FileDialog 'Create a FileDialog object as a File Picker dialog box. Set fd = Application.FileDialog(msoFileDialogFilePicker) 'Declare a variable to contain the path 'of each selected item. Even though the path is a String, 'the variable must be a Variant because For Each...Next 'routines only work with Variants and Objects. Dim vrtSelectedItem As Variant 'Use a With...End With block to reference the FileDialog object. With fd 'Use the Show method to display the File Picker dialog box and return the user's action. 'The user pressed the action button. If .Show = -1 Then 'Step through each string in the FileDialogSelectedItems collection. For Each vrtSelectedItem In .SelectedItems 'vrtSelectedItem is a String that contains the path of each selected item. 'You can use any file I/O functions that you want to work with this path. 'This example simply displays the path in a message box. MsgBox "The path is: " & vrtSelectedItem Bildpfad.Text = vrtSelectedItem Next vrtSelectedItem 'The user pressed Cancel. Else End If End With 'Set the object variable to Nothing. Set fd = Nothing End Sub Gruü Stefan |
Hallo Stefan, probiers mal mit Application.FileDialog(msoFileDialogFolderPicker) (siehe auch VBA-Hilfe zu FileDialog) Aber: dieser FileDialog ist erst ab XL-XP verfügbar. Gruü stefan Stefan Theobald schrieb: > Hallo, > > in der VB-Hilfe ist folgendes Bespiel, wie man eine Datei auswählen kann und > in ein Feld schreiben kann. > Ich möchte das ganze aber nutzen um nicht eine Datei sondern nur einen > Ordner auszuwählen. > Sicherlich ist das doch nur ein kleinwenig anderer Befehl??? > > Wer kann helfen? > > Private Sub cdmPfad_Click() > > 'Declare a variable as a FileDialog object. > Dim fd As FileDialog > > 'Create a FileDialog object as a File Picker dialog box. > Set fd = Application.FileDialog(msoFileDialogFilePicker) > > 'Declare a variable to contain the path > 'of each selected item. Even though the path is a String, > 'the variable must be a Variant because For Each...Next > 'routines only work with Variants and Objects. > Dim vrtSelectedItem As Variant > > 'Use a With...End With block to reference the FileDialog object. > With fd > > 'Use the Show method to display the File Picker dialog box and > return the user's action. > 'The user pressed the action button. > If .Show = -1 Then > > 'Step through each string in the FileDialogSelectedItems > collection. > For Each vrtSelectedItem In .SelectedItems > > 'vrtSelectedItem is a String that contains the path of each > selected item. > 'You can use any file I/O functions that you want to work > with this path. > 'This example simply displays the path in a message box. > MsgBox "The path is: " & vrtSelectedItem > Bildpfad.Text = vrtSelectedItem > > Next vrtSelectedItem > 'The user pressed Cancel. > Else > End If > End With > > 'Set the object variable to Nothing. > Set fd = Nothing > > > > End Sub > > > > Gruü > Stefan |
Vielen Dank, funktioniert prima! Gruü Stefan "stefan onken" <steonken@freenet.de> schrieb im Newsbeitrag news:1129031579.388444.232740@o13g2000cwo.googlegr oups.com... Hallo Stefan, probiers mal mit Application.FileDialog(msoFileDialogFolderPicker) (siehe auch VBA-Hilfe zu FileDialog) Aber: dieser FileDialog ist erst ab XL-XP verfügbar. Gruü stefan Stefan Theobald schrieb: > Hallo, > > in der VB-Hilfe ist folgendes Bespiel, wie man eine Datei auswählen kann > und > in ein Feld schreiben kann. > Ich möchte das ganze aber nutzen um nicht eine Datei sondern nur einen > Ordner auszuwählen. > Sicherlich ist das doch nur ein kleinwenig anderer Befehl??? > > Wer kann helfen? > > Private Sub cdmPfad_Click() > > 'Declare a variable as a FileDialog object. > Dim fd As FileDialog > > 'Create a FileDialog object as a File Picker dialog box. > Set fd = Application.FileDialog(msoFileDialogFilePicker) > > 'Declare a variable to contain the path > 'of each selected item. Even though the path is a String, > 'the variable must be a Variant because For Each...Next > 'routines only work with Variants and Objects. > Dim vrtSelectedItem As Variant > > 'Use a With...End With block to reference the FileDialog object. > With fd > > 'Use the Show method to display the File Picker dialog box and > return the user's action. > 'The user pressed the action button. > If .Show = -1 Then > > 'Step through each string in the FileDialogSelectedItems > collection. > For Each vrtSelectedItem In .SelectedItems > > 'vrtSelectedItem is a String that contains the path of > each > selected item. > 'You can use any file I/O functions that you want to work > with this path. > 'This example simply displays the path in a message box. > MsgBox "The path is: " & vrtSelectedItem > Bildpfad.Text = vrtSelectedItem > > Next vrtSelectedItem > 'The user pressed Cancel. > Else > End If > End With > > 'Set the object variable to Nothing. > Set fd = Nothing > > > > End Sub > > > > Gruü > Stefan |
Tom <tommired2000@web.de> schrieb im Beitrag <1129728374.313518.317780@f14g2000cwb.googlegroups .com>... > diese Algorithmen habe ich gefunden, doch da ich derzeit noch ziemlich > "anfängerhaft" mit VB arbeite komme ich damit einfach nicht weiter. > Könntest Du mir bitte mal ein Beispiel hierfür posten ? > Hoffe, ich verlang jetzt nicht zu viel ! Nicht zuviel für mich, aber zuviel für Dich. Wenn Du VB erlernen willst, dann hilft Dir kein fertiger Code. Nimm anstattdessen den Code, den Du gefunden hast, analysiere ihn und poste hier die Fragen dazu, auf welche Du Dir die Antwort nicht durch die VB-Online-Hilfe erschlieüen kannst. Ein paar Stichworte: - Die Daten werden in der Regel in einem Datenfeld (Array) gespeichert; ein Datenfeld legst Du in VB mit Dim xyz() As <Datentyp> und/oder ReDim xyz() As <Datentyp> an. Bsp.: Type Test Nummer As Integer Eintrag As String End Type Dim TestArray(5) As Test - Das Datenfeld muü dann Element für Element durchlaufen werden; dafür stehen in VB verschiedene Schleifenbefehle zur Verfügung: For ... Next ... Do ... Loop While ... Wend. Bsp.: Dim Index As Long For Index = LBound(TestArray) To UBound(TestArray) ... Next Index - Für das Vergleichen der Datenfeld-Elemente verwendest Du If ... Then ... zusammen mit Vergleichs-Operatoren wie '>', '<', '=' und 'Like'. Bsp.: If TestArray(0).Nummer > TestArray(1).Nummer Then ... End If - Für das Ersetzen eines Datenfeld-Elementes durch ein anderes verwendest Du den Zuweisungs-Operator '='; dieser läüt sich allerdings nicht bei benutzerdefinierten Typen einsetzen, dort kommt der Befehl LSet zum Einsatz (oder man koopiert alle Typen-Felder einzeln). Bsp. (vertauschen zweier Elemente eines Datenfeldes aus Elementen eines benutzerdefinierten Typs): Dim TestTmp As Test LSet TestTmp = TestArray(0) LSet TestArray(0) = TestArray(1) LSet TestArray(1) = TestTmp -- ---------------------------------------------------------------------- THORSTEN ALBERS Universität Freiburg albers@ uni-freiburg.de ---------------------------------------------------------------------- |
Michael Schüller <michael.schueller@gmx.de> schrieb im Beitrag <dihjtp$8gl$1@newsreader3.netcologne.de>... > Ich kann z.B. mit dem Windows-Editor eine Datei erstellen und mit "Codierung > Unicode" speichern. Kann ich diese Codierung auch mit einem "Open > #"-Statement in VB festlegen? > ... > Also: kann ich dem VB-Befehl "Open #" sagen, dass er die Datei als Unicode > speichern soll? Nein. Aber: Du kannst die Datei mit "As Binary" öffnen und den Text speichern, wobei Du allerdings nicht Put #<Datei-Nr.>, , MeinString$ verwenden darfst, denn hier greift die VB-interne Umwandlung in einen ASCII-Strings. Stattdessen kopierst Du den String vorher in ein Byte-Array: Private Declare Sub CopyMemory _ Lib "kernel32" Alias "RtlMoveMemory" _ ( _ pDestination As Any, _ pSource As Any, _ ByVal lByteCount As Long _ ) Dim abString() As Byte ' A Redim abString(LenB(MeinString$)) As Byte Call CopyMemory(abString(LBound(abString)), _ ByVal StrPtr(MeinString$), _ LenB(MeinString$)) ' oder ' B abString() = MeinString$ Put #<Datei-Nr.>, , abString() Wenn Du es trotz der erwähnten Einschränkung gerne mit 'Put' und 'MyString$' hättest, dann kannst Du folgendes machen: Dim StringTmp As String StringTmp$ = StrConv(MyString$, vbUnicode) Put #<Datei-Nr.>, , StringTmp$ Allerdings ist das keineswegs empfehlenswert, da es sehr speicher- und zeitaufwendig ist! (Hier wird getrickst: Der String, der bereits ein Unicode-String mit 2 Byte/Zeichen ist, wird in einen 'Unicode-String' umgewandelt, so daü danach 4 Byte/Zeichen verwendet werden; VB wandelt diesen String dann intern vermeintlich in einen ASCII-String um und speichert diesen dann - tatsächlich jedoch wird dabei der ursprüngliche Unicode-String wieder hergestellt und gespeichert...) Generell läüt sich jedoch sagen: Das ganze läüt sich wesentlich besser mit Funktionen des Windows-API erledigen (also CreateFile(), WriteFile(), CloseHandle())! -- ---------------------------------------------------------------------- THORSTEN ALBERS Universität Freiburg albers@ uni-freiburg.de ---------------------------------------------------------------------- |
Objekt einer Instanz zuweisen, verschiedene Möglichkeiten Hallo, ich bin sowohl ein Neuling in diesem Forum als auch unter den Programmierern. Ich habe eine grundlegende Frage, es handelt sich um eine VB.Net Umgebung die in ABB Robotstudio 5.11 integriert ist. Welchen Unterschied machen mir die folgenden 2 Formulierungen, wenn ich alles richtig verstanden habe geht es darum, dass ich einer Instanz die ich anlege ein Objekt zuweise: Dim stn as Station=Project.ActiveProject Dim selobject as Projectobject=stn.Selection.SingleSelectedObject und Dim selobject as projectobject= Project.ActiveProject.Selection. SingleSelectedObject Von der Funktionalität macht es scheinbar keinen Unterschied (Debug-Modus in Robotstudio nicht nutzbar!)und die grundsätzliche Funktionalität ist mir klar. Bei beiden habe ich im Endeffekt eine Variable, der im aktiven Projekt ein Object zugewiesen wird, wenn genau eines vor Starten des Makros mit Mausklick ausgewählt wurde. Welchen Unterschied macht es, wenn ich mir zunächst die Variable stn bilde (das nennt man docj dann Instanz??) oder nicht? Ich habe noch ein weiteres analoges Beispiel, wobei einer der beiden hier zu einer Fehlermeldung führt: Dim stn as Station=Project.ActiveProject Dim wobj as RSWorkobject = stn.ActiveTask.ActiveWorkobject oder Dim wobj as RSWorkobject = Project.ActiveProject.ActiveTask.ActiveWorkobject Der 2. Fall brint mir hier folgende Fehlermeldung: "ActiveTask" is not a member of "ABB.Robotocs.RobotStudio.Project" Schön und gut...nur was macht das dann für einen Unterschied, ob ich mir erst die Instanz stn schaffe? Warum ist ActiveTask dann auf einmal Member??? Ich danke euch schon mal für eure Antworten. Und wenn ich irgendwas falsch benannt habe (Instanzen z.b.) korrigiert mich bitte. Zuerst dachte ich, dass jeweils beide Schreibweisen das gleiche bedeuten (lediglich Verkürzung, ich muss nicht immer "Project.ActiveProject" sondern nur noch "stn" schreiben), aber beim gerade vorangegangenen Beispiel ist dies ja nicht der Fall! Also Die verwendeten Namespaces und Referencen sind ABB eigene Referenzen. Sie sind in der Hilfe wie folgt beschrieben: Station (Class): The Station object is a set of objects with a spatial and/or logical relationsship. Creates and initiates a new station object. Project (Class): Base class for all project types. ActiveProject (Public Ahared Property): Gets the project that is currently active Projectobject (Class): Abstract base class for all objects that can be part of a Project. It can not be instanciated. Selection (Public Read only Prooerty): Gets an object giving acces to the selection system for the project. Singleselected (Public Read only property): If a single object is selected, that object is returned, otherwise null. RSWorkobject: A Workobject is a coordinate system...Initializes a new instance of the RSWorkobject class. ActiveTask: !keine Definition gefunden! Aber bezieht sich wohl darauf, dass das ActiveWorkobject (siehe nächster Befehl) aus dem aktiven Task genommen wird. ActiveWorkobject: Gets or stes the active RSWorkobject of the task |
AT-Befehle zu Hyperterminal Versenden Hallo Community, ich programmiere im Rahmen meines Schulabschlussprojekts ein Vb-Programm das über den Com-Port einen AT-Befehl an ein Handy sendet, damit dies eine SMS verschickt. Das Ansprechen des Com.Ports läuft soweit auch ganz gut, nur habe ich ein Problem beim übermitteln des Enter Befehls. Ich habe ein Siemens C45 an den PC angeschlossen und erfolgreich mittels Hyper Terminal eine SMS verschickt und einen Anruf getätigt. bsp. ATDS<2> und Enter gedrückt im Hyperterminal. Das Handy hat einwandfrei einen Anruf getätigt. Wenn ich diesen Befehl nun aber über Vb versende macht das Handy garnichts. Ich habe zur öberprüfung zwei PCs mittels Nullmodemkabel aneinander geschlossen um zu schauen was mein VB Programm an Hyperterminal zurück gibt. Der String der öbergeben wird ist einwandfrei, nur der Command Enter scheint irgendwie nicht richtig anzukommen. Das ganze mach ich über den Code [vb]Port1.Write("ATDS<2>" + vbCr[/vb] die Ports initialisiere ich über die Load Code: 'Stellt die Benötigten COM-Ports ein Try Port1.PortName = "COM1" Port1.BaudRate = 19200 Port1.Handshake = IO.Ports.Handshake.None Port1.Open() lblCOM1.Text = "Vorhanden" lblCOM1.ForeColor = Color.Green Catch ex As Exception MsgBox(ex.Message) lblCOM1.Text = "Nicht vorhanden" lblCOM1.ForeColor = Color.Red End Try Try Port2.PortName = "COM2" Port2.BaudRate = 19200 Port2.Handshake = IO.Ports.Handshake.None Port2.Open() lblCOM2.Text = "Vorhanden" lblCOM2.ForeColor = Color.Green Catch ex As Exception MsgBox(ex.Message) lblCOM2.Text = "Nicht vorhanden" lblCOM2.ForeColor = Color.Red End Try Kennt sich jemand mit dem geschilderten Problem aus oder könnte mir einen Tipp geben an was es liegen könnte? Wäre über jede Hilfe dankbar Gruü Vertax Edit So ich habe zur weiteren Fehleranalyse ein Programm geschrieben das nur den Com-Port anspricht und den Befehl sendet. Code: Public Class Form1 Dim Port1 As New System.IO.Ports.SerialPort Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Port1.Write("ATDS <1>" & vbCr) End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Open the serial port Port1.PortName = "COM1" Port1.BaudRate = 19200 Port1.Handshake = IO.Ports.Handshake.None Port1.Open() End Sub End Class Bei Hyperterminal kommt korrekt ATDS<1> an. Doch wie gesagt reagiert das Handy nicht darauf, wenn ich dies allerdings direkt im Hyperterminal eingebe funktioniert der Befehl. |
öber ACCESS auf Oracle BLOB via ODBC zugreifen Hallo, habe gerade ein schwerwiegendes Problem, bei dem ich nicht mehr weiterkommen. Ich verwende ACCESS 2003. Die Tabellen liegen in Oracle 10g und sind via ODBC an Access verknüpft. In die Tabelle habe ich jetzt ein BLOB Feld eingefügt, um von ACCESS aus PDF Files zu verwalten. Mit Perl kann ich sowohl die Oracle BLOB Felder ein und auslesen und erhalte ein richtiges PDF File. öber Access mit VB möchte ich erst mal das PDF in eine Datei schreiben, die ich dann anzeigen will. Dazu habe ich auch die Microsoft Anleitung verwendet. Er liest mir auch die korrekte Byte Anzahl aus Oracle aus. Doch die Variable enthält nur Fragezeichen und ein paar Kreuze "????????ÂÂ???????????????????????????'????`??`??? ?????????ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ...". Die Datei ist nicht lesbar. Woran liegt das und wie kann ich das PDF wirklich auslesen. Das Programm, das ich zum auslesen ver wende ist folgendes: Function WriteBLOB(t As Recordset, sField As String, _ Destination As String) Dim Numblocks As Integer, DestFile As Integer, i As Integer Dim FileLength As Long, LeftOver As Long Dim FileData As String Dim RetVal As Variant Dim Msg As String On Error GoTo Err_WriteBLOB ' Get the size of the field. FileLength = t(sField).FieldSize() If FileLength = 0 Then WriteBLOB = 0 Exit Function End If ' Calculate number of blocks to write and leftover bytes. Numblocks = FileLength BlockSize LeftOver = FileLength Mod BlockSize ' Remove any existing destination file. DestFile = FreeFile Open Destination For Output As DestFile Close DestFile ' Open the destination file. Open Destination For Binary As DestFile ' SysCmd is used to manipulate the status bar meter. 'RetVal = SysCmd(acSysCmdInitMeter, _ '"Writing BLOB", FileLength / 1000) ' Write the leftover data to the output file. FileData = t(sField).GetChunk(0, LeftOver) Msg = " Filedata: " & FileData MsgBox Msg, 64, "Copy File" Put DestFile, , FileData ' Update the status bar meter. 'RetVal = SysCmd(acSysCmdUpdateMeter, LeftOver / 1000) ' Write the remaining blocks of data to the output file. For i = 1 To Numblocks ' Reads a chunk and writes it to output file. FileData = t(sField).GetChunk((i - 1) * BlockSize _ + LeftOver, BlockSize) Msg = i & " " & Numblocks & " " & FileData MsgBox Msg, 64, "Copy File" Put DestFile, , FileData 'RetVal = SysCmd(acSysCmdUpdateMeter, _ '((i - 1) * BlockSize + LeftOver) / 1000) Next i ' Terminates function 'RetVal = SysCmd(acSysCmdRemoveMeter) Close DestFile WriteBLOB = FileLength Exit Function Err_WriteBLOB: WriteBLOB = -Err Exit Function End Function Den Recordset t erhalte ich über folgenden Befehl: Set t = db.OpenRecordset("SELECT NR,SDB_DATEI,SDB FROM BAK_HAUPTSTOFFE WHERE (((NR)=" & Me![NR] & "));") SDB=BLOB Würde mich sehr über eine Lösung freuen. Gruü Thomas |
DDE - Visual Basic in Delphi 5 übersetzen Ich muü ein zum Theme DDE ein VBA-Code in Delphi übersetzen und habe folgende Information gefunden:<br> Das Programm EuriTel kann von anderen Programmen aus mit DDE gesteuert werden.<br> Zur Steuerung des Programms EuriTel verwenden Sie folgende Einstellungen:<br> LinkTopic EuriTel|DDE<br> Die Befehle sind mit LinkExecute ausführbar.<br> Folgende Befehle sind möglich:<br> ATDxxxx Nummer xxxxxxx wählen.<br> ATH Auflegen<br> Show Zeigt das EuriTel Fenster<br> Hide Minimiert das EuriTel Fenster<br> ATDMAxxxx Nummer xxxx wählen, MSN A benutzen (Nur Eurit 20 / 30) analog mit MSN B C D E<br> ATDMAH1xxxx Nummer xxxx wählen, MSN A benutzen (Nur Eurit 40) analog mit MSN B C D E<br> ATDyyyxxxx Nummer xxxx wählen, vorher Makro yyy ausführen (Nur Eurit 40)<br> Atxxxxxxxx Befehl an das Telefon schicken (alle Befehle des Eurit unterstützt, jedoch kann es zu unvorhergesehenen Effekten kommen, falls versucht wird Einträge im Telefonbuch oder die Konfiguration zu ändern).<br> DIALxxxx Nummer xxx wählen, aktuelle Einstellungen verwenden (Makro, MSN) <br> Die folgenden Informationen können über DDE angefordert werden:<br> LinkTopic LinkItem<br> Letzter Teilnehmer (Telefonnummer) EuriTel|DDE DDENummer<br> Letzter Teilnehmer (Name) EuriTel|DDE lblName<br> Status (als Text) EuriTel|DDE <br>lblStatus Gebühren EuriTel|DDE lblGebühren<br> Gesprächsdauer EuriTel|DDE lblDauer<br> Benutzte MSN EuriTel|DDE lblMSN<br> Beispiel: Wählen aus MS Access:<br> Fügen Sie ein Modul ein und deklarieren folgende Funktion:<br> Public Function DDEDial(Nummer As String) As Boolean<br> Dim intKan1 As Long<br> 'Fehlerbehandlungsroutine einrichten.<br> On Error Resume Next<br> 'Verknüpfung herstellen.<br> intKan1 = DDEInitiate("EuriTel", "DDE")<br> 'Falls Fehler auftritt, wurde EuriTel vielleicht<br> If Err Then<br> 'nicht gestartet. Fehler zurücksetzen und Funktion beenden<br> Err = 0<br> DDEDial = False<br> Exit Function<br> End If<br> 'Nummer wählen.<br> DDEExecute intKan1, "ATD" & Nummer<br> DDETerminate intKan1<br> DDEDial = True<br> End Function<br><p> Mit MSACCESS funktioniert das einwandfrei. Wie kann ich das nach Delphi5 übersetzen ? Wer kann helfen ?<br> |
<b> DDE - Visual Basic in Delphi 5 übersetzen </b><p> Hallo Herr Kosch,<br> vielen Dank für die schnelle Mitteilung.<br> In dem Programm habe ich folgende Information gefunden:<br> Das Programm EuriTel kann von anderen Programmen aus mit DDE gesteuert werden.<br> Zur Steuerung des Programms EuriTel verwenden Sie folgende Einstellungen:<br> LinkTopic EuriTel|DDE<br> Die Befehle sind mit LinkExecute ausführbar.<br> Folgende Befehle sind möglich:<br> ATDxxxx Nummer xxxxxxx wählen.<br> ATH Auflegen<br> Show Zeigt das EuriTel Fenster<br> Hide Minimiert das EuriTel Fenster<br> ATDMAxxxx Nummer xxxx wählen, MSN A benutzen (Nur Eurit 20 / 30) analog mit MSN B C D E<br> ATDMAH1xxxx Nummer xxxx wählen, MSN A benutzen (Nur Eurit 40) analog mit MSN B C D E<br> ATDyyyxxxx Nummer xxxx wählen, vorher Makro yyy ausführen (Nur Eurit 40)<br> Atxxxxxxxx Befehl an das Telefon schicken (alle Befehle des Eurit unterstützt, jedoch kann es zu unvorhergesehenen Effekten kommen, falls versucht wird Einträge im Telefonbuch oder die Konfiguration zu ändern).<br> DIALxxxx Nummer xxx wählen, aktuelle Einstellungen verwenden (Makro, MSN) <br> Die folgenden Informationen können über DDE angefordert werden:<br> LinkTopic LinkItem<br> Letzter Teilnehmer (Telefonnummer) EuriTel|DDE DDENummer<br> Letzter Teilnehmer (Name) EuriTel|DDE lblName<br> Status (als Text) EuriTel|DDE <br>lblStatus Gebühren EuriTel|DDE lblGebühren<br> Gesprächsdauer EuriTel|DDE lblDauer<br> Benutzte MSN EuriTel|DDE lblMSN<br> Beispiel: Wählen aus MS Access:<br> Fügen Sie ein Modul ein und deklarieren folgende Funktion:<br> Public Function DDEDial(Nummer As String) As Boolean<br> Dim intKan1 As Long<br> 'Fehlerbehandlungsroutine einrichten.<br> On Error Resume Next<br> 'Verknüpfung herstellen.<br> intKan1 = DDEInitiate("EuriTel", "DDE")<br> 'Falls Fehler auftritt, wurde EuriTel vielleicht<br> If Err Then<br> 'nicht gestartet. Fehler zurücksetzen und Funktion beenden<br> Err = 0<br> DDEDial = False<br> Exit Function<br> End If<br> 'Nummer wählen.<br> DDEExecute intKan1, "ATD" & Nummer<br> DDETerminate intKan1<br> DDEDial = True<br> End Function<br> Mit MSACCESS funktioniert das einwandfrei. Wie kann ich das nach Delphi5 übersetzen ? Gib es sowas wie LinkExecute in Delphi ?<br> |
Gewachsenes Skript das keiner mehr versteht Hallo zusammen, ich arbeite derzeit an einem System, dass mir von jemand anderem übergeben wurde. Derjenige hat mir keinerlei Dokumentation über ein spezielles Skript überlassen ... ok, er hat mir keinerlei Dokumentation über irgendwas gegeben, aber mit dem andern kram komme ich soweit gut zu recht und verstehe auch, was dort passiert. Mit einem Skript komme ich wie schon gesagt jedoch nicht zurecht: Code: ' Microsoft SQL Server Integration Services user script component ' This is your new script component in Microsoft Visual Basic .NET ' ScriptMain is the entrypoint class for script components Imports System Imports System.Data Imports System.Math Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper Imports Microsoft.SqlServer.Dts.Runtime.Wrapper Public Class ScriptMain Inherits UserComponent Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) Dim sqlCon As SqlClient.SqlConnection = CType(Me.Connections.Connection.AcquireConnection(Nothing), SqlClient.SqlConnection) Dim sqlCom As SqlClient.SqlCommand Dim STR_SQL As String STR_SQL = "UPDATE Stammdaten SET Division = '" & Row.Div & "' WHERE ORG_ID LIKE '" & Row.OrgID & "%'" sqlCom = New SqlClient.SqlCommand(STR_SQL, sqlCon) sqlCom.ExecuteNonQuery() End Sub End Class Was das Skript macht: Das Skript geht hin und fügt bei einer Unternehmensstruktur eine Divisionsbezeichnung zu den jeweiligen namen hinzu ... diese Divisionsbezeichnung wird anhand des Abteilungskürzels zugewiesen ... Eckdaten
Prozeduraler Ablauf
soviel zu dem, was dieses Skript macht - und das macht es auch soweit fehlerfrei! Aber ich wüsste, gerne wieso es das macht was es macht :)
Die Problematik ist das abgleichen einer Matrix gegen eine Matrix und der prozedurale Ablauf. Ich versuche derzeit soviel SQL wir möglich aus den Packages raus zu bekommen und in Stored Procedures unterzubringen. Mein Vorgänger hat für jeden noch so kleinen SQL schnipsel fast ein eigenes Package angelegt und ich wollte die Befehle in stored procedures ablegen ... einfach weil in manchen Packages manche SQL Befehle mehrfach verwendet werden und ich keine Lust habe eine ćnderung an 1.000 Stellen zu pflegen. Bisher hat das auch ganz gut geklappt ... nur hierbei tu ich mir irgendwie schwer :D Ich schau mal in Richtung T-SQL und IF/ELSE ... aber leider bin ich bei T-SQL noch bei den anfängen ... wenn jemand was genaueres weiü oder mir ein gutes Buch oder eine (können auch mehrere sein) gute Website zum Thema T-SQL kennt wäre ich dankbar :) Vielleicht bin ich auch ganz auf dem Holzweg :confused: - auch da wäre ich um eine Antwort dankbar :o |
Excel VBA Opentext Spaltenbreite definieren Hallo liebe Forumgemeinde, ich habe einen vba code geschrieben, in dem eine txt Datei ausgewählt und eingefügt wird. Für das einfügen der txt Datei habe ich den Opentext - Befehl benutzt. Um meine benötigten Formatierungen zu bekommen, habe ich vorher das ganze mal manuell gemacht und dies mit den markrorecorder aufgenommen. Dort wurde dann der QueryTables.Add Befehl genommen, da ich dort über Daten einfügen gegangen bin. Mein Problem ist, wenn ich diese Einstellungen vom Markorecorder übernehmen will, kann ich das für den Opentext Befehl nur für die Spaltenformate (Standard, text usw.) machen. Ich schaffe es dort einfach nicht die Spaltenbreite und damit die Spaltenanzahl zu definieren. Ohne diese definition macht excel dies automatisch und die spalten verrutschen. Weiü jemand wie das bei dem Opentext Befehl geht?:confused: Alternativ könnte ich ja den QueryTables.Add Befehl aus dem recorder nehmen, leider muss dort aber im Code der Ort der text Datei stehen,oder ist es möglich den Ort durch eine Auswahl (Application.GetOpenFilename) vorzugeben? Code geschrieben für Texteinfügen. (Mit Opentext , Spaltenbreite und Anzahl wie?) Code: Option Explicit Sub OpenTextFile() Dim varRetVal As Variant Dim strFileName As String ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path varRetVal = Application.GetOpenFilename( _ FileFilter:="Text-Dateien (*.txt), *.txt", _ Title:="Daten aus Text-Datei importieren") If varRetVal = False Then Exit Sub strFileName = varRetVal Workbooks.OpenText Filename:=strFileName, StartRow:=18, _ DataType:=xlFixedWidth, TextQualifier:=xlTextQualifierDoubleQuote, _ ConsecutiveDelimiter:=True, Tab:=True, Space:=True, fieldinfo:=Array(Array(1, 2), _ Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), _ Array(6, 2), Array(7, 2), Array(8, 2), Array(9, 2), Array(10,9)) Dim wkb As Workbook Dim wks As Worksheet Set wkb = ActiveWorkbook strFileName = ThisWorkbook.Path & "NeueXLDatei.xls" wkb.SaveAs Filename:=strFileName, FileFormat:=xlWorkbookNormal Set wks = wkb.Worksheets(1) wks.Name = "VB" wks.UsedRange.Columns.AutoFit Set wks = Nothing Set wkb = Nothing End Sub Code vom Makrorecorder für die Spaltenbreite usw. (Mit QueryTables.Add , geht nur wenn der Ort der txt Dateo fest im code steht, oder doch mit Auswahl möglich?) Code: Sub Makro2() With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:Dokumente und EinstellungenMartin BauerDesktopIn BearbeitungMessübertragungabc.txt" _ , Destination:=Range("$A$1")) .Name = "abc" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 1252 .TextFileStartRow = 20 .TextFileParseType = xlFixedWidth .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 9) .TextFileFixedColumnWidths = Array(5, 10, 12, 11, 11, 11, 10, 10, 22) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With End Sub Vielen Dank schon mal! Grüüe Martin |
Hi dies ist mein erste Post im Forum , ich hoffe das die Informationen für euch Hilfreich sind. Benötigt wird: Mono(getestet mit 1.1.10) ikvm(min 0.20)'bei mono dabei jexcelapi(getestet mit 2.5.8) 'zu beziehen von jexcelapi.sourceforge.net 1. Jexcelapi von sf.net downloaden und das archiv entpacken 2. In das verzeichnis wechseln wo das archiv entpackt wurde 3. nun mit dem befehl "ikvmc -target:library jxl.jar" die jar datei in eine .net dll konvertieren 4.nun sollte man wenn nicht schon geschehen IKVM.Runtime.dll und IKVM.GNU.Classpath.dll die sich im unterverzeichnis "ikvm" des mono lib Verzeichnises befinden zum Gac hinzufuegen. 5.nun kann es eigentlich auch schon losgehen: In monodevelop ein neues vb.net/c# projekt anlegen und auf die erzeugte jxl.dll und IKVM.Runtime.dll und IKVM.GNU.Classpath.dll referenzieren. 6. Hier ein kleines Beispiel in vb.net: Imports System Imports jxl Imports jxl.write Imports java.io Imports java.util Module Test Sub Main() 'Erzeugen von einem neuen Workbook Dim workbook As WritableWorkbook = jxl.Workbook.createWorkbook(new File("/home/michi/datei.xls")) 'Erzeugen eines Excelmappe innerhalb des Dokuments Dim sheet As WritableSheet = workbook.createSheet("First Sheet", 0) 'Setzen des Header/Footers und der Seitenabstaende Dim exlheader As HeaderFooter = New HeaderFooter() Dim exlfooter As HeaderFooter = New HeaderFooter() exlheader.getCentre().append("Kopfzeilen String") sheet.getSettings().setHeader(exlheader) exlfooter.getCentre().append("Fuüzeilen String") sheet.getSettings().setFooter(exlfooter) 'setzten der Seiten Abstaende sheet.getSettings().setHeaderMargin(2) sheet.getSettings().setFooterMargin(2) sheet.getSettings().setTopMargin(1.5) sheet.getSettings().setBottomMargin(1.5) sheet.getSettings().setLeftMargin(1.5) sheet.getSettings().setRightMargin(1.5) 'Schriftart und Groesse Dim arial10font As WritableFont = new WritableFont(WritableFont.ARIAL, 10) Dim arial10format As WritableCellFormat = new WritableCellFormat (arial10font) Dim number As Number = new Number(2,2, 3.123,arial10format) sheet.addCell(number) Dim label As Label = new Label(3,3,"Test",arial10format) sheet.addCell(label) 'Schreiben und Schlieüen des Workbooks workbook.write() workbook.close() End Sub End Module Das ist aber nur ein einfaches Beispiel. Für c# code kann man einfach die beispiele aus dem tutorial auf der jexcelapi seite nehmen(c# ist java sehr aehnlich) Das Javadoc enthaelt zusaetzliche Informationen welche Moeglichkeiten jexcelapi bietet. Im Verzeichniss wo jexcelapi entpackt wurde kann man auch in den sourcefile src/jexcelapi/demo/write* sehr gut sehen wie man die Klassen benutzen kann. Hoffe das es jemandem hilft! :D Mfg Michael Golisch |
Liste Ich habe mit diesem Befehl die Outlook Kontakte hereingeladen: function outlookimport_kontakte dim con,cn,rs dim KontaktArtNummer dim KontaktGrundNummer dim StatusNummer ' Import der vordefinierten Daten aus 'fachberater.ini' KontaktArtNummer = f.w("outlook.KontaktArtNummer","") KontaktGrundNummer = f.w("outlook.KontaktGrundNummer","") StatusNummer = f.w("outlook.StatusNummer","") ' ACCESS --------------------------------------- ' setze Werte für Access und baue Verbindung zur Datenbank auf fMeldung = f.w("t.importfehler","") fNoContacts = f.w("t.NoContacts","") fContacts = f.w("t.ContactsToImport","") DB = f.w("db.fachberater","") cn = f.conString(DB,"access") set con = CreateObject("ADODB.Connection") set rs = CreateObject("ADODB.Recordset") ' Verbindung öffnen con.open cn ' Recordset definieren rs.open "Select * from Kontakt",con,3,3 ' OUTLOOK -------------------------------------- ' baue Verbindung zu Outlookauf und setze gewünschten Ordner Set nms = CreateObject("Outlook.Application").GetNameSpace(" MAPI") 'Set fld = nms.Folders.Item("Public Folders").Folders.Item("All Public Folders").Folders.Item("HelpDesk").Folders.Item("M eldungen") 'Set fld = nms.Folders.Item("Mailbox - Hackner Thomas").Folders.Item("Calendar") ' Set fld = nms.Folders("Personal Folders").Folders("Calendar") Set fld = nms.GetDefaultFolder(9) ' 9 = Calendar 'If (fld <> "Calendar") Then ' MsgBox "Bitte navigieren Sie zu Calendar und rufen sie das Makro erneut auf!" 'End 'End If Set itms = fld.Items ' Referenz auf Items-Auflistung im Ordner ItemCount = itms.Count ' Anzahl der Items im Ornder If ItemCount = 0 Then ' Items im Ordner vorhanden? MsgBox fNoContacts 'Exit Sub Else MsgBox ItemCount & fContacts End If i = 1 while i <= ItemCount ' Schleife über alle Items im Ordner Set itm = itms(i) ' Setze Referenz auf Item if(Instr(LCase(itm.Categories),LCase("FBPortal")) <> 0) then ' Wenn Item der Kategorie "FBPortal" zugeteilt wurde rs.addnew ' Kopieren der Werte rs("Bemerkung") = itm.Subject rs("Bericht") = itm.Body rs("DatumVon") = FormatDateTime(itm.start,2) rs("ZeitVon") = FormatDateTime(itm.start,3) rs("KontaktArtNummer") = KontaktArtNummer rs("KontaktGrundNummer") = KontaktGrundNummer 'CLng(KontaktGrundNummer) rs("StatusNummer") = StatusNummer 'CLng(StatusNummer) rs.update itm.delete ' Löschen des Outlook-Items i = i - 1 end if i = i + 1 Set itms = fld.Items ' Referenz auf Items-Auflistung im Ordner ItemCount = itms.Count ' Anzahl der Items im Ornder 'Custom Outlook properties ' rst.Preferred = itm.UserProperties("Preferred") wend ' Schlieüen aller offenen Verbindungen rs.close con.close end function Und mit einer liste meinte ich eine Tabelle!!! Entschuldigt die falsche Ausdrucksweise!!!!!!!!! Die obige Programmiersprache is visual basic!!!! Die Sache hat sich schon erübrigt!!!!!!! Ich habe mit Hilfe einer .ini Datei eine LISTE erstellt und diese mit einem SOFT befehl in eine Tabelle geladen..... OK is das korrekt?????? |
Kann das stimmen ?!?! Seid gegrüsst, Ich habe da mal ein paar kleine Fragen und so wie ich des ganze hier sehe sind diese Fragen bei euren Können ruck zuck geklärt. Ich muss jetzt in der Arbeit mit einem Programm arbeiten, dass mehrere Sprachen beinhaltet ( unteranderem C / C ++, aber vor allen Dingen Visual Basic ) und lerne es daher in jeder freien Minute. Leider habe ich gerade ein Problem und würde gerne wissen, ob nun der Autor des Buches ( Visual Basic in 21 Tagen  von Greg Perry ) auf der Seite 170 schreibt : Buchstaben sind gemäü ihrer alphabetischen Reihenfolge angeordnet, d.h. >>A<< ist kleiner als >>B<< und der Name >>Walter<< ist gröüer ( steht vor ) >>William<<. Wieso zum Teufel ?! Wenn doch ÂA kleiner als ÂB ist, wie kann dann auf einmal ÂWilliam gröüer als ÂWalter sein ?! Des muss doch ein Tippfehler sein, oder ?! Falls nicht, dann bitte ich um Erklärung, wieso dass so sein sollte. Auf Seite 174 beschreibt er diverse Operatoren, unteranderem den ÂNot  Operator. Als Beispiel gibt es an : Not ( 3 = 3 ) False Verstehe ich nicht. Oben heisst es doch, dass ( = ) bei identischen Faktoren nur ÂTrue bedeuten kann. Muss ich mir das so vorstellen, wie wenn ich in der Informatik eine 0 zur 1 negiere ?!?!?!?!?!? Ok, eine letzte Frage noch. Ich versuche ( und das betone ich....Versuche *lol ) gerade ein Programm zu schreiben, dass mir in der Arbeit meine Gleitzeit berechnet ( bewusst nicht mir Excel ) weiü allerdings nicht so ganz, wie ich einen Bereich angeben kann. Sagen wir, ich will ein Label für Kommen und ein Label für Gehen haben. Benne es folgendermaüen : lblCome und lblGo So, diese beiden Werte werden  über einen Befehl ( Command  Button / cmdGetIt )  nun berechnet und schreiben ihr Ergebnis in das Label Ergebnis ( lblErgebnis ) So, da ich aber wie gesagt Gleitzeit habe und jeden Tag unterschiedlich komme und gehe, kann ich ja keine Standardvariablen festlegen. Wie kann ich also einen Bereich anzeigen lassen ?! Ich versuche mal meinen Ansatz zu schildern....hoffe, dass das ok ist. Option Explicit Private Sub cmdGetIt_Click() Dim intVar1 As Integer Dim sngVar2 As Single CurCome As Currency CurGo As Currency Soooo, soweit müsste es doch stimmen ..aber wie definiere ich jetzt die Variablen ÂintVar1" und ÂsngVar2" ?!?!?!? Ich kann ja schlieülich nicht schreiben : IntVar1 = Â0  23 Oder doch ?! Mir haut Visual Basic 6 dann nämlich einen Fehler rein. Würde mich freuen, wenn mir jemand helfen könnte. Grüüe Total Gotcha |
Hallo, ich habe mal versucht deine Funktion einzubauen, habe aber immer einen Fehler mit dem Loop. Hast du da noch eine Idee??? Gruü Stefan Private Sub Dateiauswahl_Click() ' Eine Variable als FileDialog object deklarieren. Dim fd As FileDialog Dim i As Integer Dim sFilePfad As String ' Ein Dateidialogobjekt als Datei- / Ordner Auswahldialog box erstellen. ' Set fd = Application.FileDialog(msoFileDialogFolderPicker) ' währe der Befehl wenn man einen Ordner auswählen will. ' Dazu kann man dann noch einen Filter setzen, welche Dateitüpen ' angezeigt werden sollen - Beispiel in der Hilfe! Set fd = Application.FileDialog(msoFileDialogFilePicker) ' Eine Variable deklarieren, die den Pfad von jedem ausgewählten Objekt aufnimmt. ' Even though the path is a String, ' the variable must be a Variant because For Each...Next ' routines only work with Variants and Objects. Dim vrtSelectedItem As Variant 'Use a With...End With block to reference the FileDialog object. With fd ' Dateiextensions-Filter leeren .Filters.Clear ' Dateiextensions-Filter für Bilder / Grafiken anlegen und als ersten Wert in der Auswahl-Liste anzeigen .Filters.Add "Bildformate / Grafiken", "*.gif;*.jpg;*.jpeg;*.bmp", 1 'Use the Show method to display the Folder Picker dialog box and return the user's action. 'The user pressed the action button. If .Show = -1 Then 'Step through each string in the FileDialogSelectedItems collection. For Each vrtSelectedItem In .SelectedItems 'vrtSelectedItem is a String that contains the path of each selected item. 'You can use any file I/O functions that you want to work with this path. 'This example simply displays the path in a message box. sFilePfad = vrtSelectedItem i = Len(sFilePfad) Do Until Mid(sFilePfad, i, 1) = "" i = i - 1 If i = 0 Then Exit Do Loop If i = 0 Then GetFileName = sFilePfad Else GetFileName = Mid(sFilePfad, i + 1) End If Dummybild.Text = GetFileName Next vrtSelectedItem 'The user pressed Cancel. Else End If End With 'Set the object variable to Nothing. Set fd = Nothing End Sub "Marcel Garaventa" <MarcelGaraventa@discussions.microsoft.com> schrieb im Newsbeitrag news:A3CEAE45-67E3-4333-84BE-FAF90D6AC1D8@microsoft.com... > Hallo Stefan > > Dies sollte mit folgender Funktion möglich sein. (Konnte es leider nicht > testen): > > Private Function GetFileName(sFilePfad As String) > Dim i As Integer > > i = Len(sFilePfad) > > Do Until Mid(sFilePfad, i, 1) = "" > i = i - 1 > If i = 0 Then > Exit Do > Loop > > If i = 0 Then > GetFileName = sFilePfad > Else > GetFileName = Mid(sFilePfad, i + 1) > End If > End Function > > Gruss Marcel > > > "Stefan Theobald" wrote: > >> Hallo Newsgroup, >> >> ich habe zwei Fragen (die zweite werde ich in einem extra Beitrag >> stellen): >> >> Ich habe in der VB-Hilfe ein schönes Beispiel gefunden, wei man ein >> Dialog >> zur Dateiauswahl mit Filter erstellen kann. >> Das funktioniert auch soweit sehr gut. Ich hätte aber gerne statt ges >> kompletten Pfades nur gerne den Dateinamen der ausgewählten Datei >> zurückgegeben. >> >> Wie kann ich das machen????? >> In der Hilfe steht immer nur, dass vrtSelectedItem ein String ist, der >> den >> Pfad vom ausgewählten Objekt enthält. >> >> >> Gruü >> Stefan >> >> >> |
Aha,und hier der Code fürs grübeln :-) Würde mich freuen wenn das mir jemand sagen könnte: [code:1:68988f1e4e] <html><title>Objekt test</title> <head> <script language="VBScript" type="text/vbscript"> sub faxwahl Dim eintrag Dim nid Dim oApp Dim oAccount Dim oArchive Dim oItem Dim oArchiv2 Dim oNewItem Dim OFaxitems Set oApp = CreateObject("DVOBJAPILib.DvISEAPI")<--API von Tobit Set oAccount = oApp.Logon Set oArchive = oAccount.GetSpecialArchive(DvArchivePersonalOut) Set oArchiv2 = oArchive.Archives(1) Set oView =createobject("????????????") <---hier muss ich es ja erstellen? Set view1 =oView.ListView With view1 .View = lvwReport .HideSelection = False .GridLines = True .FullRowSelect = True .ColumnHeaders.Add , "Betreff", "Betreff", 2400 .ColumnHeaders.Add , "Zeit/Datum", "Zeit/Datum", 1900 .ColumnHeaders.Add , "Seitenanzahl", "Seitenanzahl", 1400 On Error Resume Next For a = 0 To oArchiv2.FaxItems.Count Set eintrag = view1.ListItems.Add(, , CStr(oArchiv2.FaxItems_(a).Subject)) If IsNull(oArchiv2.FaxItems(a).Subject) Then MsgBox ("Alles eingelesen.") Else Set oItem = oArchiv2.FaxItems(a) eintrag.SubItems(1) = oItem.Fields("StatusTime").Value End If If Not IsNull(oArchiv2.FaxItems(a).Subject) Then Set oItem = oArchiv2.FaxItems(a) eintrag.SubItems(2) = oItem.Fields("PageCount").Value End If Next End With oAccount.Logoff Set oAccount = Nothing Set oArchive = Nothing Set oApp = Nothing End sub sub view1_ItemCheck(ByVal Item) Dim n2 set Item = createobject("MSComctlLib.ListItem") Set oApp = CreateObject("DVOBJAPILib.DvISEAPI") Set oAccount = oApp.Logon Set oArchive = oAccount.GetSpecialArchive(DvArchivePersonalOut) Set oArchiv2 = oArchive.Archives(1) With view1 'For Each n2 In view1.ListItems For i = 1 To view1.ListItems.Count If view1.ListItems(i).Checked = True Then On Error Resume Next Set oItem = oArchiv2.FaxItems(i) nid = oItem.[_ID] Set oNewItem = oArchiv2.ItemFromID(nid, 34) Call ShellExecute(0, "Open", oNewItem.Image, "", "", 1) End If 'view1.ListItems(i).Checked = False Next 'Next End With a = oNewItem.Image MsgBox a oAccount.Logoff Set oAccount = Nothing Set oArchive = Nothing Set oApp = Nothing End sub //--> </script> <noscript></noscript> </head> <body> <object classid="clsid:BDD1F04B-858B-11D1-B16A-00C0F0283628" id=ListView1 style="HEIGHT: 80px; LEFT: 10px" VIEWASTEXT> <param name="Font" value="10"> <param name="Name" value="view1"> usw. </OBJECT> <form> <table> <tr> <td> <input type="button" name="start" value="Los" onclick="faxwahl()"> </td> </tr> </table></form></body> </html> [/code:1:68988f1e4e] Wie gesagt in Vb 6.0 funzt das alles wunderbar,aber ich muü das eben in VBSript schreiben weil ich das für ein Tobit Formular anwenden muü. Tobit Formulare(DFML) sind ne Mischung aus HTML und spez. DFML Befehlen.Die API von Tobit funzt da wuüte ich auch was ich einbinden muü.Aber eben das ListView ansprechen,das gestaltet sich komisch ;-)! öber Hilfe bin ich wirklkich sehr dankbar. Mfg DMC |