|
thanks for that code...
but i cannot use Ms Access for my development...
anyways will definitly give it a try..
|
|
|
|
|
Break it apart in simpeler tasks, and start by reading the textfile. There are lots of ways to solve this, but you'll have to make a start somewhere, so why not by reading the text?
Once you can post that code, we can look where we're going to put step 2
I are troll
|
|
|
|
|
this is the code i have written sofar.
Private Function Groupe_Flex_Cable()
Dim temp As String
Dim name As String
Dim comp As String
Dim desF As String
Dim desAF As String
Dim desA As String
Dim desAA As String
Dim ecn As String
Dim dnf As String
Dim repDNF As String
Dim repASM As String
Dim NbOfSpaces As Integer = 0
Dim Grp As Boolean = False
Dim a As String = " "
Dim b As String = " "
Dim l As Integer
Dim lpFlex As Integer = 0
Dim lpCable As Integer = 0
Dim Nb As Integer = 2
Dim Current_desf As String = ""
Try
Using sw As StreamWriter = New StreamWriter("c:\DB\output11.txt")
Using sa As StreamReader = New StreamReader("c:\DB\01530501.txt")
temp = sa.ReadLine()
name = temp.Substring(0, 29)
comp = temp.Substring(30, 18)
desF = temp.Substring(49, 32)
desAF = temp.Substring(82, 38)
desA = temp.Substring(120, 35)
desAA = temp.Substring(156, 33)
ecn = temp.Substring(190, 10)
dnf = temp.Substring(201, 7)
repDNF = temp.Substring(208, 9)
repASM = temp.Substring(217, 8)
sw.WriteLine(name & comp & desF & desAF & desA & desAA & ecn & dnf & repDNF & repASM)
sw.WriteLine(sa.ReadLine())
While sa.Peek() >= 0
temp = sa.ReadLine()
name = temp.Substring(0, 29)
comp = temp.Substring(30, 18)
desF = temp.Substring(49, 32)
desAF = temp.Substring(82, 38)
desA = temp.Substring(120, 35)
desAA = temp.Substring(156, 33)
ecn = temp.Substring(190, 10)
dnf = temp.Substring(201, 7)
repDNF = temp.Substring(208, 9)
repASM = temp.Substring(217, 8)
If name.Contains("Groupe") Then
Grp = True
NbOfSpaces = NbOfCar(name, " ") + 2
ElseIf Grp And NbOfCar(name, " ") = NbOfSpaces Then
sw.WriteLine(name.Remove(0, 2) & comp.Insert(0, a) & desF & desAF & desA & desAA & ecn & dnf & repDNF & repASM)
Else
Grp = False
lpFlex = name.IndexOf("_FLEX")
lpCable = name.IndexOf("_CABLE")
If lpFlex <> -1 Or lpCable <> -1 Then
l = name.IndexOf(".")
If lpCable = -1 Then
sw.WriteLine(name.Substring(0, lpFlex) & name.Substring(l, (name.Length - l)) & comp.Insert(0, b) & desF & desAF & desA & desAA & ecn & dnf & repDNF & repASM)
Else
sw.WriteLine(name.Substring(0, lpCable) & name.Substring(l, (name.Length - l)) & comp.Insert(0, b) & desF & desAF & desA & desAA & ecn & dnf & repDNF & repASM)
End If
Current_desf = Trim(desF)
temp = sa.ReadLine()
Do While Current_desf = Trim(desF)
name = temp.Substring(0, 29)
desAF = temp.Substring(82, 38)
desA = temp.Substring(120, 35)
desAA = temp.Substring(156, 33)
ecn = temp.Substring(190, 10)
dnf = temp.Substring(201, 7)
repDNF = temp.Substring(208, 9)
repASM = temp.Substring(217, 8)
comp = temp.Substring(30, 18)
desF = temp.Substring(49, 32)
temp = sa.ReadLine()
Loop
l = name.IndexOf(".")
If l <> -1 Then
sw.WriteLine(name.Substring(0, l) & name.Substring(l, (name.Length - l)) & comp & desF & desAF & desA & desAA & ecn & dnf & repDNF & repASM)
Else
sw.WriteLine(name)
End If
Else
l = name.IndexOf(".")
If l <> -1 Then
sw.WriteLine(name.Substring(0, l) & name.Substring(l, (name.Length - l)) & comp & desF & desAF & desA & desAA & ecn & dnf & repDNF & repASM)
End If
End If
End If
End While
End Using
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Function
it will read a file, search for the word "Groupe" move the lines below "Groupe" towards left by 2 space characters...
then checks for _Flex or _Cable and deletes the lines below that line...
so reading a file is not a problem...
i dont know how to put it into a data table and group the similar lines and write it as a single line and enter a new fieldname called Quantity and enter the value of similar lines in the Quantity field...
|
|
|
|
|
Tom's has already posted a detailed idea on how to add the desired functionality. Might I add that it's easier to write small functions that tackle small problems?
If you state that you want "..and.. ..and.. or.. and.." then your thinking about the big picture. That's good when you're architecting things, but it's not helping when you have to write a specific detail. Try breaking the wishes apart and write a method for each
I are troll
|
|
|
|
|
1) count similar lines
2) enter the count of similar lines in a new fieldname called Quantity
3) delete the similar linesleavinng one line with the fieldname Quantity
these are the things i want to do...
there are 4 fields to be considered to find the similarity of the lines
ie.,
the name,dnf,rep_dnf and rep_asm in the lines having same values should be counted and entered in the quantity field...
|
|
|
|
|
1) Load all lines in a datatable
2) count similar lines (select distinct with a group by and a count?)
3) enter the count of similar lines in a new fieldname called Quantity
4) writing the new lines to a file
Tom has given you a starting point to get all the lines in a datatable. I'd focus on achieving that step first
I are troll
|
|
|
|
|
Parse it, line by line. When you put it in the form of an item into a list, check to see if the list already contains the item. If it doesn't, write the line to a MemoryStream or byte array. Every n items, or at the end of the file, write the MemoryStream to the same file with FileMode.Create
|
|
|
|
|
There have been **many** suggestions on how to resolve your problem since you began posting this question almost a month ago (and its numerous reposted versions since 3/9).
Part of being a developer is taking the initiative and actually trying any of the suggestions made by other forum members. Another part of being a dev is knowing when to step back and realize when your making something harder than it really needs to be.
Stop....break the task into smaller tasks.....and concentrate on each of those until the problem is solved. A caffeine refill here and there has never been known to hurt either.
Any suggestions, ideas, or 'constructive criticism' are always welcome.
"There's no such thing as a stupid question, only stupid people." - Mr. Garrison
|
|
|
|
|
I have many items in a Listbox and would like to be able to search through them by simply typing the first couple characters however it looks like only the first char is evaluated. Is there a setting I am missing or a better control to use?
|
|
|
|
|
Yes, it only works with the first char. You'll have to write your own code to do that, and it makes sense if you accept a string, that you show it. The current behaviour doesn't have any possibility of a typo, it just keeps re-searching. But, if you search on more than one char, the user needs to see what they typed and be able to edit it.
Christian Graus
Driven to the arms of OSX by Vista.
"I am new to programming world. I have been learning c# for about past four weeks. I am quite acquainted with the fundamentals of c#. Now I have to work on a project which converts given flat files to XML using the XML serialization method" - SK64 ( but the forums have stuff like this posted every day )
|
|
|
|
|
crap...that's what i feared
|
|
|
|
|
Hi,
After having created a new SQL server database in VB 2008 I am unable to perform a drag and drop for a datagrid of the table. When trying to drop the datagrid on a form it comes back with the following message:
An error occurred while performing the drop:
Illegal characters in path.
I recently followed the instruction videos of MSDN and was able to do it just fine. After a lenghty search for some references I needed I might have changed some setting in the process I am not sure. However I did reset all the environment settings to "factory" default and at witts end even uninstalled/installed VB2008express. I must say that at some point I had an error
on reset telling me it could not find "XML..."(can't remember the exact phrase anymore), but eventually it restored fine.
I do not have any code to show as it already happens just creating an .mdf/ making a table in a new project and trying to drop the datagrid onto the form. If someone could help me out or provide inspiration it would be appreciated.
All the best,
Robbert
|
|
|
|
|
Hello Everyone,
Before posting my requirement regarding adding elements to propertygrid dynamically and showing a dropdown checkedlistbox in propgrid, I want to tell that I did go thru loads of samples or articles (in this site) regarding propertygrid and its usage. I did find ways to add elements to propertygrid dynamically and examples whereby I found checkedlistbox in propgrid but I didnt find a combination of the two. I tried for a day or two to get them work together but failed.
I am using Visual Studio . NET 2008 (my dev language is VB.NET). I am relatively new to propertygrid control and thus not an expert at this. After using it for a while I figured that though it is not easy to add items to the grid dynamically. Looking here and there I came across a code in this site (codeproject.com) which is a class PropertyBag which helps in adding elements to propertygrid dynamically. This worked fine and I thought I was thru until something came up.
For a particular field I need a checkedlistbox style option. This checkedlist box should be dynamically added with elements and shows in propertygrid. This users can check/uncheck any item they want.
Thus to sum up I need a code that can enable me to add items to propertygrid at runtime and add items to checkedlistbox (also dynamically) which should be shown in propertygrid.
I have been struggling with this for few days and inspite of repeated tries I have been unsuccessful so far. A small working code will be appreciated.
I would be grateful if anyone can help me out.
Thanks,
Jack
|
|
|
|
|
How to set wallpaper with VB.NET 2005
|
|
|
|
|
Look into the SystemParametersInfo API. You can find an example here. Just a warning though - some image types can't be set as wallpapers, so you'll have to save a copy as a bitmap and use that
|
|
|
|
|
I'm trying to create a general error handler in a VBScript and I keep getting a syntax error in the following line:
On Error GoTo LogError
FYI, here is the error handler code:
LogError:
Log "ERROR", "VBScript runtime error = " & Err.number
Err.Clear()
Resume Next
I was wondering if VBScript actually does support the On Error GoTo construct. I haven't been able to find much while poking around the web with Google.
|
|
|
|
|
From what I remember it only supports On Error Resume Next.
But it's a few years since I used VBScript and things may have changed.
Regards
David R
|
|
|
|
|
This is true, only On Error Resume Next is available.
In January you said "Money in April" -
That was two years ago!
B. Python
|
|
|
|
|
Hello i don't know if this is the correct forum since i'm using vba excel.
My problem consists when trying too program my own opc client. I use a kepware simulation server too test my client.
In my program i use a treeview too show the layout of the server. If I click on the treeview it should show the items in that particular group. I can do that two times when i try too do that the third time i get an error that it can't find that particular item, but since it's in the treeview i know it excists.
this is how i connect too the server:
Set OPCMyserver = New OPCServer
OPCMyserver.Connect Selectedserver.Caption 'We try to connect to OPC server
Selectedname = Selectedserver.Caption
Set OPCMygroups = OPCMyserver.OPCGroups 'We load the OPC Groups
OPCMygroups.DefaultGroupDeadband = 0
OPCMygroups.DefaultGroupIsActive = True
OPCMygroups.DefaultGroupUpdateRate = 100
Set OPCMygroup = OPCMygroups.Add("Group_1") 'We add a group, the name is not important
Set OPCMyitems = OPCMygroup.OPCItems 'We load the OPC Items located in the OPC Group
Set OPCMyBrowser = OPCMyserver.CreateBrowser 'For the navigation in the OPC server
OPCMyBrowser.Showbranches
This is what shouls happen if you click on a node in the treeview
Private Sub OPCtree_NodeClick(ByVal SelectedNode As Node)
Dim itemnaam As String
Dim itemteller As Long
Dim anItem As OPCItem
Itemlist.ListItems.Clear
OPCMyBrowser.MoveToRoot
Set SelectedNode = OPCtree.SelectedItem
browseposition SelectedNode.Key
OPCMyBrowser.ShowLeafs
itemteller = OPCMyBrowser.count
For Each vName In OPCMyBrowser
itemnaam = "" + OPCMyBrowser.GetItemID(vName)
Itemlist.ListItems.Add , , itemnaam
Next vName
Dim I As Integer
For I = 1 To itemteller 'We add all the OPC Items of the ListView to the Collection of OPC Items
OPCItemIDs(1) = Itemlist.ListItems(I)
OPCMyitems.AddItems 1, OPCItemIDs, ClientHandles, ItemServerHandles, Errors
Next I
OPCMygroup.IsActive = Not OPCMygroup.IsActive 'Necessary to refresh data
OPCMygroup.IsSubscribed = Not OPCMygroup.IsSubscribed 'Necessary to refresh data
OPCMygroup.UpdateRate = Val(100) 'Use the refresh time
For I = 1 To Itemlist.ListItems.count 'For all the items in the ListView
For Each anItem In OPCMygroup.OPCItems 'For all OPC Items
anItem.Read OPCDevice 'Read the item, and the Item Id is the same than the current name in the ListView...
If anItem.ItemID = Itemlist.ListItems(I) Then
Itemlist.ListItems(I).SubItems(1) = anItem.Value '...get the Item Value...
Itemlist.ListItems(I).SubItems(2) = anItem.TimeStamp '...get the Item TimeStamp...
Itemlist.ListItems(I).SubItems(3) = anItem.Quality '...get the Item Quality
Exit For
End If
Next anItem
Next I
Set anItem = Nothing
OPCMyBrowser.MoveToRoot
End Sub
And this is how i browse for the correct position
Private Sub browseposition(ByVal Positie As String)
Dim I As Integer
Dim NormalPosition As String
Dim comparestring As String
Dim teller As Integer
Dim bfound As Boolean
OPCMyBrowser.MoveToRoot
NormalPosition = Positie
OPCMyBrowser.Showbranches
For Each vName In OPCMyBrowser
comparestring = "" + vName
teller = Len(comparestring)
If Left(NormalPosition, Len(comparestring)) = comparestring Then: bfound = True: Exit For
Next vName
If bfound Then
Do While (Len(NormalPosition)) > 0
OPCMyBrowser.MoveDown (comparestring)
comparestring = "" + Mid(NormalPosition, (Len(comparestring) + 2))
NormalPosition = comparestring
Loop
Else
MsgBox "No Match was Found for " & NormalPosition, vbInformation, "Match Failure"
End If
End Sub
I know it's rather a lot of code I added, but I didn't know what I should add and I can't find were it goes wrong. I only know that OPCMyBrowser.Movetoroot doesn't do it's job the third time.
I hope someone knows or sees what i'm doing wrong is.
greetings dadio25
|
|
|
|
|
Hello,
SO nobody knows what my problem appears too be or is it something else??
greetings dadio25
|
|
|
|
|
Hi All
I have a working code written in VFP http://www.foxite.com/archives/use-notepad-on-a-scx-0000129391.htm[^]
I tried to convert it to Vb.Net but I get stuck in error appearing whatever I do
Declare Function SetParent Lib "user32" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr
Declare Function WinExec Lib "kernel32" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
Declare Function FindWindow Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim nHwnd As Long
' run notepad
WinExec("notepad.exe", 1)
' find its hwnd
nHwnd = FindWindow(Nothing, "Untitled - Notepad") ' <-- Error
' Note you must supply the EXACT Caption of the window)
' force it inside our form
SetParent(nHwnd, Me.Handle.ToInt32)
' size it
Dim nLeft, nTop, nWidth, nHeight As Integer
nLeft = Me.Panel11.Left
nTop = Me.Panel11.Top
nWidth = Me.Panel11.Width
nHeight = Me.Panel11.Height
SetWindowPos(nHwnd, 1, nLeft, nTop, nWidth, nHeight, 64)
End Sub
Error Message : "Arithmetic operation resulted in an overflow"
I tried to add Panel, and command button and picture same result.
Could some one check it please,
And is there is better idea to show external window such as Excel or Word.
Like car accidents, most hardware problems are due to driver error.
Samir R. Ibrahim
|
|
|
|
|
First, scrap all of this. You don't need most of it. Your biggest problem is that you're using VB.NET and using VB6 code in it. You declared a bunch of stuff as Long, which under VB6, was a 32-bit signed integer and, under VB.NET, is a 64-bit signed integer. You cannot use the two types interchangably.
You can use this instead:
Private Declare Auto Function SetParent Lib "user32" (ByVal hwndChild As IntPtr, ByVal hwndParent As IntPtr) As IntPtr
...
' Launch a Notepad process and wait for it's window to be created.
Dim p As Process = Process.Start("Notepad.exe")
p.WaitForInputIdle()
' Then set it's parent window to a panel on our form.
SetParent(p.MainWindowHandle, Panel1.Handle)
|
|
|
|
|
|
Auto modifier
The Auto modifier instructs the runtime to convert the string based on the method name according to common language runtime rules (or alias name if specified).
|
|
|
|
|
No, it doesn't. When you create a declaration for a Win32 function, or some other external library function, some of these can come in two flavors, Ascii and Unicode (or Wide). For example, say you're digging around the MSDN documentation and find a function you need call SomeFunction. Well, you might see two version of if, one called SomeFunctionA and the other SomeFunctionW. Depending on which version of Windows you were running under, the W version of the function may not exist. So Auto will automcatically pick which function to bind to.
|
|
|
|
|