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
Asp
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:*.* &gt; 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;">&lt;input type="hidden" name="id1" value="32423"&gt;</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&gt
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
    lTabelle 1 = DivisionWildcard
      lSpalte1 = OrgIDl lSpalte2 = Divl
    l
    lTabelle 2 = Stammdaten
      lVergleichsfeld = ORG_IDl lZielfeld = Divisionl
    l

Prozeduraler Ablauf
    lwir nehmen Wert zeile 1, spalte 1 aus Tabelle 1 und vergleichen ihn mit allen Werten der Spalte ORG_ID in Tabelle 2l lWurde dieser Wert gefunden, schreibe Wert zeile 1,spalte 2 in das entsprechende Feld (Division) von Tabelle 2l lWenn das durchsuchen in Tabelle 2 am ende angekommen ist, nimm wert 2 aus Tabelle 1 und durchlaufe das prozedere, bis das ende von Tabelle 1 erreicht ist.l

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 :)
    lAn Welcher Stelle ist die Zuweisungstabelle DivisionsWildcard angegeben?l lGeht das ganze vielleicht auch in irgendeiner SQL Variante (T-/PL) damit ich mir den weg über dieses Skript sparen kann?l

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

>