Schamann.net

…děláme vJeci jinak…

You are currently browsing the Visual Basic category.

Err -2147217887

Chyba: „Operace s více kroky vedla k vytvoření chyb. Zkontrolujte všechny stavové hodnoty.“

je způsobena uložením prázdné hodnoty do DB do tabulky kde je očekávána hodnota konkretní délky nebo formátu.

např: do pole formátu DATE vkládám hodnotu NULL, nebo String

Posted 9 years, 2 months ago at 21:49.

Add a comment

MSHFlexGrid a schránka

Tady je několik jednoduchých funkcí pro práci s MSHFlexGrid a schránkou – Kopírování dat do a z a podobné funkce.

‚Vyjmutí – Ctrl+X
Private Sub EditCut()
EditCopy
EditDelete
End Sub

‚Kopírování – Ctrl+C
Private Sub EditCopy()
Clipboard.Clear
Clipboard.SetText MSFlexGrid1.Clip
End Sub

‚Vložení Ctrl+V
Private Sub EditPaste()
If Len(Clipboard.GetText) Then MSFlexGrid1.Clip = _
Clipboard.GetText
End Sub

‚Smazat označené Del
Private Sub EditDelete()
Dim i As Integer
Dim j As Integer
Dim strClip As String
With MSFlexGrid1
For i = 1 To .RowSel
For j = 1 To .ColSel
strClip = strClip & „“ & vbTab
Next
strClip = strClip & vbCr
Next
.Clip = strClip
End With
End Sub

‚Vyber vše Ctrl+A
Private Sub EditSelectAll()
With MSFlexGrid1
.Visible = False
.row = 1
.col = 1
.RowSel = .Rows – 1
.ColSel = .Cols – 1
.TopRow = 1
.Visible = True
End With
End Sub

Posted 9 years, 4 months ago at 16:28.

Add a comment

Práce s FSO

Otevřít všechny soubory v zadaném adresáři a zkopirovat vybrany obsah do .txt souboru: (procedura z GPS)

Dim iCisloSouboru As Integer
Dim sText As String
Dim ts As TextStream
Dim iStart As Integer
Dim sFile As String
Dim sCisloSIM As String
Dim vFile
Dim vFolder As Folder
Dim vFile1
On Error GoTo GenerovaniHistorie_Error
iCisloSouboru = FreeFile
sCisloSIM = InputBox(„Vlož číslo sim pro generování historie“, „Generování Historie“, „773400“)
‚    CommonDialog.DialogTitle = „Vyber soubor“
‚    CommonDialog.Filter = „*.txt“
‚    CommonDialog.ShowOpen
‚    sFile = CommonDialog.FileName
Set vFolder = mdl_objFSO.GetFolder(„e:/logs/odpovidac/zaloha/“)
Set vFile = vFolder.Files
For Each vFile1 In vFile
Set ts = mdl_objFSO.OpenTextFile(vFile1, ForReading)
Do
sText = ts.ReadLine
If InStr(sText, „&REPORT,000003“) Then
Open App.Path & „\Data\“ & sCisloSIM & „.txt“ For Append As #iCisloSouboru
Write #iCisloSouboru, sText
Close #iCisloSouboru
Open App.Path & „\Data\“ & sCisloSIM & „data.txt“ For Append As #iCisloSouboru
iStart = InStr(sText, „&REPORT,000003“)
Write #iCisloSouboru, Mid(sText, iStart)
Close #iCisloSouboru
End If
Loop Until ts.AtEndOfStream
ts.Close
Set ts = Nothing
Next

Dim iCisloSouboru As Integer

Dim sText As String

Dim ts As TextStream

Dim iStart As Integer

Dim sFile As String

Dim sCisloSIM As String

Dim vFile

Dim vFolder As Folder

Dim vFile1

iCisloSouboru = FreeFile

sCisloSIM = InputBox(„Vlož číslo sim pro generování historie“, „Generování Historie“, „773400“)

Set vFolder = mdl_objFSO.GetFolder(„e:/logs/odpovidac/zaloha/“)

Set vFile = vFolder.Files

For Each vFile1 In vFile

Set ts = mdl_objFSO.OpenTextFile(vFile1, ForReading)

Do

sText = ts.ReadLine

If InStr(sText, „&REPORT,000003“) Then

Open App.Path & „\Data\“ & sCisloSIM & „.txt“ For Append As #iCisloSouboru

Write #iCisloSouboru, sText

Close #iCisloSouboru

End If

Loop Until ts.AtEndOfStream

ts.Close

Set ts = Nothing

Next

Posted 9 years, 5 months ago at 14:40.

Add a comment

Unexpected error

Při kompilaci se těsně před zapsáním .exe souboru vyskytla chyba „unexpected error“.

Chybu jsem odstranil postupným odebíráním části projektu jsem objevil chybný ctl.
Jeho odstraněním se problém vyřešil.

Chybu způsobil:
Class DHTMLEDLibCtl.DHTMLEdit

Pravděpodobně změnou konfigurace při aktualizaci prohlížeče IE.

Posted 9 years, 6 months ago at 19:01.

Add a comment

Redim vícerozměrného pole

Při pokusu o ReDim nebo ReDim Preserve u vícerozměrného pole toto nelze použít na jinou než poslední část pole.

tedy:

Dim Pole()  ‚Projde

ReDim Pole (10,10)  ‚Projde

Redim Pole(10,15)  ‚Projde

ReDim Pole(15,15) ‚Err 9 – Subscript out of range

Řešení je pouze jedno a to:

Erase Pole

ReDim Pole(15,15)

… a znovu naplnění celého pole.

Při použití menšího čísla než je současné dojde ke ztrátě dat!

Redim Pole(14,14) ‚Projde, ale ztratí se data z pozice (15,0) – (15,15) a zaroveň všechny na pozici (x,15)

Posted 9 years, 7 months ago at 00:47.

Add a comment