| Home | Download | Bestellen | Referenzen | Support |
|
||||||||||
|
VintaSoftTwain ActiveX Komponente Wofür kann ich die VintaSoftTwain ActiveX Komponente einsetzen? Die Komponente verwaltet die Arbeit der Scanner, der Digitalkameras und anderer Geräte, die den TWAIN Standard unterstützen. In welchen Programmiersprachen kann ich die ActiveX Komponente nutzen? Die Lizenz für einen Softwareentwickler und Site-Lizenz gelten für: Die Server-Lizenz gilt außerdem für: Welche Beschränkungen hat die unregistrierte Version der Komponente? Unregistrierte Version hat die folgenden Beschränkungen: Alle diese Beschränkungen sind in der registrierten Version der Komponente gelöscht. Ich habe eine Frage oder Problem. Was kann ich tun? Die Antworten auf die meisten Fragen stehen bestimmt in der Dokumentation zur Komponente oder in den FAQ. Wenn Sie nicht fündig wurden, dann schreiben Sie bitte an den technischen Support. Kann ich diese ActiveX zusammen mit meiner Anwendung ohne Lizenzzahlungen verbreiten? Ja, Sie können die Komponente zusammen mit ihrer Anwendung verbreiten. Sie zahlen nur für die primäre Registrierung. Die Site-Lizenz und die Server-Lizenz haben keine Beschränkungen zur Verbreitung. Die Entwickler-Lizenz hat Beschränkungen zur Verbreitung. Bitte lesen Sie das Lizenzabkommen für ausführliche Informationen. Welche Dateien sollen im Distributionpaket meines Programms sein? Sie müssen Ihr Programm um nur eine Datei ergänzen: vstwain.dll. Nach der Installation Ihres Programms auf dem Rechner tragen Sie die Komponente mit Hilfe des Programms regsvr32.exe in die Registry ein (Kommandozeile: regsvr32 vstwain.dll). Ich habe das Programm in Visual Studio .NET entwickelt. Was muss ich tun, damit das Programm auf dem Client richtig ausgeführt wird? Vor dem Programmerzeugung:
Vor der Installation auf dem Zielrechner:
Ich habe eine Fehlermeldung, wenn ich versuche, das VintaSoftTwain ActiveX in Windows 98 zu registrieren. Was kann ich tun? Es ist das Problem mit Abhängigkeiten. ActiveX hat die folgenden Abhängigkeiten: Installieren Sie bitte das "Visual C++ run time files" auf Computer an, um dieses Problem zu lösen. Dieses Einstellungspaket kann von dieser Verbindung gedownloadet werden: http://download.microsoft.com/download/vc60pro/update/1/w9xnt4/en-us/vc6redistsetup_enu.exe Ich habe das Programm in Delphi entwickelt. Das Programm arbeitet richtig, wenn Benutzer als Verwalter geloggt wird, aber wenn Benutzer während Gast geloggt wird, er folgende Anzeige beim Anfang des Programms "Exception EOleSysError in module..." erhaltet. Wie kann ich dieses Problem lösen? Zuerst von allen es ist notwendig, ActiveX im System durch register32.exe Programm zu registrieren. Dieser Betrieb muß gebildet werden mit Verwalterrechten. Weiter ist notwendig der folgende Code zu deinem Programm hinzuzufügen: program Simple;
uses
Forms,
Windows, Registry, Dialogs, ActiveX,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
function IsVSTwainRegistered : Boolean;
var Reg:TRegistry;
begin
Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_CLASSES_ROOT;
Result:=Reg.OpenKey('CLSID\{1169E0CD-9E76-11D7-B1D8-FB63945DE96D}',False);
if Result then Reg.CloseKey;
finally
Reg.Free;
end;
end;
begin
if not IsVSTwainRegistered() then
begin
ShowMessage('VintaSoftTwain ActiveX is not registered!');
Exit;
end;
OleInitialize(nil);
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
OleUninitialize;
end.
Dieser Code darf prüfen ob das Programm im System registriert wird und darf dein Programm mit Gastrechten laufen lassen.Wie kann ich das Objekt VintaSoftTwain zu einer Form meines VB.NET-Projektes hinzufügen? Sie sollen diese Schritte tun, um den VintaSoftTwain Objekt zu Ihrer Form hinzuzufügen:
Ich möchte ActiveX in Delphi 2005 und BDS 2006 verwenden, aber ich kann nicht ActiveX zu einer Form hinzufügen. Ich habe eine Fehlermeldung: "Failed to add a reference to the ActiveX type library. Ensure that it is properly registered. ...". Wie kann ich dieses Problem lösen? Borland Delphi 8.0 (2005) and Borland C# Builder 1.0 haben bug und sie nehmen ActiveX Kontrollen an, nur wenn US Gegende benutzt wird. Andere Gegende hat mann ignoriert. Hier sind Schritte, die helfen dieses Problem zu lösen: Wie kann ich das VintaSoftTwain Objekt in mein Projekt auf VB dynamisch zu ergänzen? Sie müssen die nächsten Wirkungen erfüllen: 1. Den Menüpunkt "Project -> References" zu öffnen. 2. Im geöffneten Fenster die Link auf das Objekt "VintaSoftTwain ActiveX Control" zu ergänzen. 3. Weiter muß man den nächsten Code zum Projekt ergänzen: Option Explicit
Dim WithEvents VSTwain1 As VSTWAINLib.VintaSoftTwain
Private Sub StartScan_Click()
Set VSTwain1 = New VSTWAINLib.VintaSoftTwain
With VSTwain1
.StartDevice
If .SelectSource = 1 Then
.showUI = True
.Acquire
End If
End With
End Sub
Private Sub VSTwain1_PostScan(ByVal flag As Long)
If flag <> 0 Then
If VSTwain1.errorCode <> 0 Then
MsgBox VSTwain1.errorString
End If
Else
Set Image1.Picture = VSTwain1.GetCurrentImage
VSTwain1.tiffCompression = 10
VSTwain1.SaveImage 0, "c:\test.tif"
End If
End Sub
Ich versuche, VintaSoftTwain ActiveX in Windows 2003 Server zu verwenden, aber ich habe immer Fehler: "Error at loading the TWAIN_32.DLL". Wie kann ich dieses Problem lösen? Ihre Version von Windows Server 2003 hat bug in der Konfiguration: GetWindowsDirectory Funktion liefert falsche Pfad zu Windows-Verzeichnis "C: \ Dokumente und Einstellungen \ Benutzer \ Windows \" statt "C:\Windows\". Lesen Sie bitte diesen Artikel, die hilft diese Problem zu lösen: http://support.microsoft.com/kb/832048. Ich kann nicht VintaSoftTwain ActiveX zu einer Form in mein Projekt in .NET 2005 hinzufügen. Wie kann ich dieses Problem lösen? Sie mussen Hinweis auf der "stdole" Bibliothek in deinem Projekt hinzufügen, bevor Sie den VintaSoftTwain Objekt zu Ihrer Form einsetzen. Hier sind notwendige Schritte:
Wie kann ich die Komponente digital signieren, um sie auf meiner Website einzusetzen? VintaSoftTwain ActiveX ist mit den Zertifikat von Thawte unterzeichnet. Kontaktieren Sie uns bitte, wenn Sie wollen Ihre Kopie von VintaSoftTwain ActiveX durch eigene Zertifikat unterzeichnen. Welche Wirkungen soll ich erfüllen, um die Komponente auf meiner Website einzusetzen? Sie müssen die nächsten Wirkungen erfüllen: 1. Die vstwain.dll Datei auf den Server zu laden. 2. In den HTML Code die nächsten Zeilen zu korrigieren. // Im Code des Beispiels:
<OBJECT ID="VSTwain1" WIDTH=1 HEIGHT=1
CLASSID="CLSID:1169E0CD-9E76-11D7-B1D8-FB63945DE96D"
CODEBASE="">
</OBJECT>
// In Ihrem Code soll sein:
<OBJECT ID="VSTwain1" WIDTH=1 HEIGHT=1
CLASSID="CLSID:1169E0CD-9E76-11D7-B1D8-FB63945DE96D"
CODEBASE="http://www.your-server.de/activex/vstwain.dll#version=4,0,0,3">
</OBJECT>
Nach allen diesen Wirkungen müssen Sie nicht die Komponente auf allen Rechnern Ihrer Organisation aufstellen. Wenn der Benutzer die Seite mit der Komponente öffnen wird, wird er die Abfrage auf die Installation der Komponente auf seinen Rechner bekommen. Wenn er auf die Installation übereinstimmen wird, so wird die Komponente auf seinen Rechner automatisch eingerichtet sein und er kann mit die Webseite arbeiten.Wenn es notwendig ist, so kann man ActiveX in die CAB Datei unterbringen: (CODEBASE="http://www.your-server.de/activex/vstwain.cab"). Wie lade ich die eingescanten Bilder auf den Webserver? Das HTTP-Protokoll erlaubt nicht das direkte Übertragen von Dateien auf einen Web (HTTP) Server. Dazu benötigen Sie Serverseitigen Code. Im Internet finden Sie viele Möglichkeiten und Scriptbeispiele dazu. Um Bilder auf einen Webserver zu laden werden folgende Felder benötigt: ASP script, Perl script. Zum Uploaden der Bilder auf den Server muß man welche Felder wissen enthält script. ASP script contain following fields: Sie benötigen folgenden Code zum Uploaden der Bilder:
If VSTwain1.SetHttpServerParams("http://www.your-server.de/clsUploadTest.asp",
"http://www.your-server.de/clsUploadTest.asp", 4) = 0 Then
MsgBox VSTwain1.errorString
Else
VSTwain1.SetHttpFormField "Demo", "Demo string"
VSTwain1.SetHttpFormField "cmdSubmit", "SUBMIT"
If VSTwain1.SaveImageToHttp(0, "txtFile", "demo.jpg") = 0 Then
MsgBox VSTwain1.errorString
Else
Timer.Interval = 10
End If
End If
Perl script benötigt die folgenden Felder:
Sie benötigen folgenden Code zum Uploaden der Bilder:
If VSTwain1.SetHttpServerParams("http://www.your-server.de/cgi/upload.cgi",
"http://www.your-server.de/upload.html", 4) = 0 Then
MsgBox VSTwain1.errorString
Else
VSTwain1.SetHttpFormField "login", "guest"
VSTwain1.SetHttpFormField "pass", "guest"
If VSTwain1.SaveImageToHttp(0, "file", "demo.jpg") = 0 Then
MsgBox VSTwain1.errorString
Else
Timer.Interval = 10
End If
End If
Bitte sehen Sie unsere Beispiele.Ich versuche Vorrichtung mit der sourceIndex Eigenschaft im Internet Explorer vorzuwählen, aber ich erhalte ein Fehler. Warum? Jeder Objekt der Webseite im Internet Explorer hat eine sourceIndex Eigenschaft. Dieses ist eine Read-only-Eigenschaft. Sie müssen den folgenden Code verwenden, um mit einer sourceIndex Eigenschaft eines VSTwain Objektes im Javascript oder in VBScript zu arbeiten: VSTwain1.StartDevice() VSTwain1.object.sourceIndex = 1 ' second device VSTwain1.Acquire() Wie kann ich die Schwarz-weißbilder einlesen? Da das Beispiel des Codes für das Erhalten der Schwarz-weißbilder:
Private Sub StartScan()
VSTwain1.StartDevice()
If VSTwain1.SelectSource() = 1 Then
VSTwain1.OpenDataSource()
VSTwain1.pixelType = 0
VSTwain1.Acquire()
End If
End Sub
Ich verwende die Programmiersprache, der die Arbeit mit den Massiven nicht unterstützt. Wie kann ich dieses Problem entscheiden? Wenn Sie das Massiv der Werte mit Hilfe der Methoden GetPageSizes, GetPixelTypes, GetResolutions, GetUnitsOfMeasure bekommen müssen, aber Sie verwenden die Programmiersprache, die das Arbeit mit den Massiven nicht unterstützt, dann können Sie die nächste Methode ausnutzen: ' Dieses Beispiel zeigt wie die Typen der Bilder zu bekommen,
' die von das Gerät unterstützt werden
VSTwain1.StartDevice()
VSTwain1.OpenDataSource()
bSupportBW = 0
VSTwain1.pixelType = 0 ' Die Schwarz-weißbilder (1 Bit/Pixel)
If VSTwain1.errorCode = 0 Then ' Die Schwarz-weißbilder werden von das Gerät unterstützt
bSupportBW = 1
End If
bSupportGray = 0
VSTwain1.pixelType = 1 ' Die grauen Bilder (8 Bit/Pixel)
if VSTwain1.errorCode = 0 Then ' Die grauen Bilder werden von das Gerät unterstützt
bSupportGray = 1
End If
bSupportRGB = 0
VSTwain1.pixelType = 2 ' RGB (24 Bit/Pixel)
If VSTwain1.errorCode = 0 Then ' Die farbigen Bilder werden von das Gerät unterstützt
bSupportRGB = 1
End If
...................
Kann ich den ADF (den Schacht der automatischen Abgabe der Dokumente) ohne Benutzerschnittstelle verwalten? Da ist ein Beispiel für die Arbeit mit den ADF ohne Benutzerschnittstelle: Private Sub StartScan()
VSTwain1.StartDevice()
If VSTwain1.SelectSource() = 1 Then
VSTwain1.showUI = False
VSTwain1.disableAfterAcquire = True
VSTwain1.maxImages = 1
VSTwain1.autoCleanBuffer = True
VSTwain1.tiffMultiPage = True
VSTwain1.tiffCompression = 10
If VSTwain1.OpenDataSource() = 1 Then
VSTwain1.unitOfMeasure = 0
VSTwain1.pixelType = 0
VSTwain1.resolution = 200
If VSTwain1.feederPresent = 1 Then
VSTwain1.feederEnabled = True
If VSTwain1.duplex <> 0 Then
VSTwain1.duplexEnabled = True ' enable duplex
End If
If VSTwain1.feederLoaded = 1 Then
VSTwain1.xferCount = -1
VSTwain1.autoFeed = True
VSTwain1.Acquire()
End If
End If
End If
End If
End Sub
Private Sub VSTwain1_PostScan(ByVal flag As Long)
If flag <> 0 Then
If VSTwain1.errorCode <> 0 Then
MsgBox VSTwain1.errorString
End If
Else
VStwain1.SaveImage VSTwain1.NumImages-1, "c:\test.tiff"
If VSTwain1.dataSourceState = 0 Then
VSTwain1.StopDevice()
MsgBox "Scan completed."
End if
End If
End Sub
Kann ich die Konsoleanwendung verwendend diese ActiveX Komponente erstellen? Verwendend diese ActiveX Komponente darf man die Konsoleanwendung nicht erstellen. Die Anwendung soll das eigene Fenster für die Arbeit mit der Komponente haben. Wie kann ich Geräte ohne Auswahldialog wählen? Benutzen Sie folgenden Code für die Auflistung der verfugbaren Geräte: VSTwain1.StartDevice
For i = 0 To (VSTwain1.sourcesCount - 1)
MsgBox VSTwain1.GetSourceProductName(i)
Next
Dieser Code selectiert das erste Gerät:
VSTwain1.StartDevice
VSTwain1.sourceIndex = 0
.....
VSTwain1.Acquire
Dies ist der beste Weg:
VSTwain1.StartDevice
For i = 0 To (VSTwain1.sourcesCount - 1)
If VSTwain1.GetSourceProductName(i) = "Gerätname" Then
VSTwain1.sourceIndex = i
Exit For
End If
Next
.....
In diesem fall benötigen Sie den korrekten Gerätenamen.Wie kann ich die Fortschrittsanzeige ausblenden wenn ich Bilder ohne Userinterface einlesen mochte? Ab Version 2.5 können Sie alle Resourcen der Gärate kontrollieren. Der Twain Standard ermöglicht das deaktivieren der Fortschrittsanzeige wenn showUI=False gesetzt wird. Dies kann wie folgt geschehen: VSTwain1.StartDevice VSTwain1.showUI = False VSTwain1.disableAfterAcquire = True VSTwain1.maxImages = 1 VSTwain1.OpenDataSource VSTwain1.showIndicators = 0 ' deaktiviere Fortschrittsanzeige VSTwain1.Acquire
VSTwain1.StartDevice() VSTwain1.showUI = False VSTwain1.OpenDataSource() ............. VSTwain1.unitOfMeasure = 0 VSTwain1.SetImageLayout(0.2,0.2,8.3,10.8) VSTwain1.Acquire() Kann ich unterschiedliche Werte für die X- und Y-Auflösung verwenden? Ja. Hier ist Beispielcode in dem X auf 4800 dpi und Y auf 9600 dpi eingestellt wird: VSTwain1.StartDevice VSTwain1.showUI = False VSTwain1.disableAfterAcquire = True VSTwain1.maxImages = 1 VSTwain1.OpenDataSource VSTwain1.unitOfMeasure = 0 ' inches VSTwain1.capability = 4376 ' ICAP_XRESOLUTION (0x1118) VSTwain1.capType = 1 ' one value VSTwain1.capValue = 4800 ' 4800 dpi VSTwain1.SetCap VSTwain1.capability = 4377 ' ICAP_YRESOLUTION (0x1119) VSTwain1.capType = 1 ' one value VSTwain1.capValue = 9600 ' 9600 dpi VSTwain1.SetCap VSTwain1.Acquire Wie ich dem Scanner befehlen kann in die Orientierung der Landschaft oder des Porträts abzutasten? Wenn Scanner die ICAP_ORIENTATION Fähigkeit stützt, dann kannst du sie verwenden um in der Landschaftslagebestimmung abzutasten, wie folgt:
.....
VSTwain1.OpenDataSource
VSTwain1.capability = 4368 ' ICAP_ORIENTATION (0x1110)
If VSTwain1.IsCapSupported Then
VSTwain1.capType = 1 ' one value
VSTwain1.capValue = 3 ' Landscape
VSTwain1.SetCap
End If
.....
Mögliche Werte für Lagebestimmung:0 Portraitlagebestimmung, Umdrehung auf 0 Grad 1 Umdrehung auf 90 Grad 2 Umdrehung auf 180 Grad 3 Landschaftslagebestimmung, Umdrehung auf 270 Grad Wir arbeiten mit einem Netztwerk-Scanner mit ADF und lesen sehr viele Dokumente pro Tag ein. Wie können wir unsere Arbeit automatisieren? Jedes Bild soll dabei in einer eigenen Datei abgelegt werden. Sie können einzelne Dokumente durch leere Seiten von einander trennen in dem Sie mit der Methode IsBlankPage arbeiten. Hier ist ein Beispiel: Dim documentsCounter as Integer
............
documentsCounter = 0
............
Private Sub StartScan()
VSTwain1.StartDevice()
If VSTwain1.SelectSource() = 1 Then ' user selected the device
VSTwain1.showUI = False ' disable UI
VSTwain1.disableAfterAcquire = True
VSTwain1.maxImages = 1
VSTwain1.autoCleanBuffer = True
VSTwain1.tiffMultiPage = True ' multi page TIFF file
VSTwain1.tiffCompression = 10 ' auto detect of best compression algorithm
If VSTwain1.OpenDataSource() = 1 Then
VSTwain1.unitOfMeasure = 0 ' inches
VSTwain1.pixelType = 0 ' black-white image
VSTwain1.resolution = 200 ' 200 dpi
If VSTwain1.duplex <> 0 Then
VSTwain1.duplexEnabled = True ' enable duplex
End If
If VSTwain1.feederPresent = 1 Then
VSTwain1.xferCount = -1
VSTwain1.feederEnabled = True
VSTwain1.autoFeed = True
If VSTwain1.feederLoaded = 1 Then
VSTwain1.Acquire()
End If
End If
End If
End If
End Sub
Private Sub VSTwain1_PostScan(ByVal flag As Long)
If flag <> 0 Then
If VSTwain1.errorCode <> 0 Then
MsgBox VSTwain1.errorString
End If
Else
Dim jobsCounter As Integer
Private Sub Form_Load()
jobsCounter = -1
End Sub
Private Sub Scan_Click()
VSTwain1.StartDevice
VSTwain1.maxImages = 1
VSTwain1.showUI = 0
VSTwain1.disableAfterAcquire = 1
VSTwain1.tiffMultiPage = 1
VSTwain1.OpenDataSource
' 1 - Detect and include job separator and continue scanning.
' 3 - Detect and exclude job separator and continue scanning.
VSTwain1.jobControl = 1
jobsCounter = jobsCounter + 1
VSTwain1.Acquire
End Sub
Private Sub VSTwain1_PostScan(ByVal flag As Long)
If flag <> 0 Then
If VSTwain1.errorCode <> 0 Then
MsgBox (VSTwain1.errorString)
End If
Else
If VSTwain1.endOfJob = 1 Then
jobsCounter = jobsCounter + 1
Else
VSTwain1.SaveImage 0, "c:\job"+Str(jobsCounter)+".tif"
End If
End If
End Sub
.....
VSTwain1.appProductName = "MyTwainApplication"
If VSTwain1.StartDevice() Then
VSTwain1.SelectSource
VSTwain1.showUI = True
While VSTwain1.AcquireModal() = 1
Set Image1.Picture = VSTwain1.GetCurrentImage()
If VSTwain1.SaveImage(0, "c:\test.tiff") = 0 Then
MsgBox (VSTwain1.errorString)
End If
Wend
Else
MsgBox VSTwain1.errorString
End If
Option Compare Database
Option Explicit
Private Sub Form_AfterUpdate()
On Error GoTo error1
Image1.PictureData = Me![OrderImage]
Exit Sub
error1:
Image1.Picture = ""
End Sub
Private Sub Form_Current()
On Error GoTo error1
Image1.PictureData = Me![OrderImage]
Exit Sub
error1:
Image1.Picture = ""
End Sub
Private Sub BAcquire_Click()
With VSTwain1
.StartDevice
If .SelectSource = 1 Then
.autoCleanBuffer = 1
.maxImages = 1
.showUI = 1
.Acquire
End If
End With
End Sub
Private Sub VSTwain1_PostScan(ByVal flag As Long)
If flag <> 0 Then
If VSTwain1.errorCode <> 0 Then
MsgBox VSTwain1.errorString
End If
Else
If VSTwain1.numImages > 0 Then
If IsNull(Me!OrderName) Then
Me![OrderName] = " "
Me![OrderName] = "Order N" + Str(Me!Index)
End If
Me![OrderImage] = VSTwain1.GetImageAsDIB(0)
If VSTwain1.errorCode <> 0 Then
MsgBox VSTwain1.errorString
End If
Form.Refresh
End If
End If
End Sub
Kann Ich die eingescannte Bilder in die Tabelle des MS SQL Server speichern? Ja. Die eingescannte Bilder können gespeichert sein in die Tabelle des MS SQL Server mit Hilfe des GetImageAsDib Methode. Hier ist ein Beispiel für C#, in der die eingescannte Bilder in die Tabelle des MS SQL Servers speichern: private void SaveToSql_Click(object sender, System.EventArgs e)
{
byte[] dib = (byte[]) VSTwain1.GetImageAsDIB(0);
int imageSize = 14 + dib.Length;
int imageOffset = 14 + 40;
int imageBPP = VSTwain1.GetImageBPP(0);
if (imageBPP == 1) imageOffset += 2*4;
else if (imageBPP == 8) imageOffset += 256*4;
byte[] image = new byte[imageSize];
Array.Clear(image,0,imageSize);
// BITMAPFILEHEADER
image[0] = (byte)'B';
image[1] = (byte)'M';
image[2] = (byte)(imageSize&0xFF);
image[3] = (byte)((imageSize&0xFF00)>>8);
image[4] = (byte)((imageSize&0xFF0000)>>16);
image[5] = (byte)((imageSize&0xFF000000)>>24);
image[10] = (byte)(imageOffset&0xFF);
image[11] = (byte)((imageOffset&0xFF00)>>8);
image[12] = (byte)((imageOffset&0xFF0000)>>16);
image[13] = (byte)((imageOffset&0xFF000000)>>24);
Array.Copy(dib,0,image,14,dib.Length);
// Insert the image into the database
SqlConnection myConnection = new SqlConnection
(@"server=(local);database=northwind;uid=sa;pwd=");
try
{
myConnection.Open();
SqlCommand myCommand = new SqlCommand("DELETE FROM Images WHERE ImageID=1",
myConnection);
myCommand.ExecuteNonQuery();
myCommand = new SqlCommand ("INSERT INTO Images "
+ "(Image, ImageID) VALUES (@Image, @ImageID)", myConnection);
myCommand.Parameters.Add("@Image", image);
myCommand.Parameters.Add("@ImageID", 1);
myCommand.ExecuteNonQuery();
MessageBox.Show("Image is saved successfully.");
}
finally
{
myConnection.Close();
}
}
Und hier ist ein Beispiel für C#, in der die eingescannte Bilder aus die Tabelle des MS SQL Servers bekommen:
private void BGetImageFromSql_Click(object sender, System.EventArgs e)
{
SqlConnection myConnection = null;
try
{
myConnection = new SqlConnection(@"server=(local);database=northwind;uid=sa;pwd=");
SqlCommand myCommand = new SqlCommand("SELECT Image FROM Images WHERE ImageID=1",
myConnection);
myConnection.Open();
// Get the image from the database.
byte[] imagedata = (byte[])myCommand.ExecuteScalar();
if (imagedata != null)
{
if (pictureBox1.Image != null)
{
pictureBox1.Image.Dispose();
pictureBox1.Image = null;
}
MemoryStream stream = new MemoryStream(imagedata);
pictureBox1.Image = new Bitmap(stream);
MessageBox.Show("Image is loaded successfully.");
}
else
{
MessageBox.Show("Image does not exist in database.");
}
}
finally
{
myConnection.Close();
}
}
Ich benutze Visual Foxpro und der PostScan-Event wird nicht gefeuert. Warum? Das Kommando Application.AutoYield = .F. muss zu Programbegin in Visual Foxpro gesetzt sein. |
|||||||||||